I've been trying for a few days to solve a memory problem.
I have a program where the user enters a vector and its name.
The program stores everything in the vector class.
The problem is that when I print the vector, the values change to other values.
I mean an array whose name is "array" in Vector::Vector
Does anyone know where the problem might be?
Main.cpp:
# include "Midgam.h"
int main(int argc, char **argv) {
    Midgam m(3,20),m1();
    m.Start();
    m.~Midgam();
    return 0;
}
Midgam.cpp:
#include "Midgam.h"
Midgam::Midgam(int num_of_boxes, int num_of_parties):boxNum(num_of_boxes),maxParties(num_of_parties) {
    iterator = 0;
    midgam = new Vector[maxParties];
}
Midgam::~Midgam() {
    if(midgam)
        for(int i=0; i < iterator; i++)
            midgam[i].~Vector();
    delete [] midgam;
}
void Midgam::Start(){
    int choice;
    while (choice != 6){
        cout << "Please enter your choice" << endl;
        cin >> choice;
        switch (choice) {
        case 1:
            AddParty();
            break;
        case 2:
            cout << "case 2" << endl;
            break;
        case 3:
            cout << "case 3" << endl;
            break;
        case 4:
            cout << "case 4" << endl;
            break;
        case 5:
            cout << "case 5" << endl;
            break;
        case 6:
            break;
        default :
            cerr << "ERROR: invalid command; type 6 for exit" << endl;
        }
    }
    cout << "END OF PROGRAM" << endl;
}
void Midgam::AddParty(){
    string name;
    cout << "Print All:" << endl;
    PrintAll();
    cout << "Insert name:" << endl;
    cin >> name;
    if (name.size() > 12){
        cerr << "Party name is too long, please don't pass the 12 characters!!!" << endl;
        return;
    }
    cout << "Insert values:" << endl;
    Vector v(name,boxNum);
    if (!v.getBool()){
        cerr << "ERROR: invalid input" << endl;
        return;
    }
    int exist = FindPartyByName(name);
    cout << "exist: " << exist << endl;
    if(exist != -1){
        cout << "EXIST" << endl;
        midgam[exist]=v;
        return;
    }
    cout << "iterator: " << iterator <<endl;
    if(iterator >= maxParties){
        cerr << "ERROR: no more new parties" << endl;
        return;
    }
    cout << "iteraator: " << iterator << endl;
    midgam[iterator]=v;
    iterator++;
}
int Midgam::FindPartyByName(string party){
    for (int i=0; i < iterator; i++){
        if (party.compare(midgam[i].getName()) == 0){
            return i;
        }
    }
    return -1;
}
void Midgam::PrintAll(){
    for(int i=0; i < iterator; i++){
        cout << midgam[i].getName() << endl;
        midgam[i].PrintArray();
    }
}
Midgam.h:
#include <iostream>
#include <string>
#include "Vector.h"
using namespace std;
#ifndef MIDGAM_H_
#define MIDGAM_H_
class Midgam {
private:
    int boxNum;
    int maxParties;
    int iterator;
    Vector *midgam;
public:
    Midgam(int num_of_boxes, int num_of_parties);
    virtual ~Midgam();
    void Start();
    void AddParty();
    int FindPartyByName(string party);
    void PrintAll();
};
#endif /* MIDGAM_H_ */
Vector.cpp:
#include "Vector.h"
Vector::Vector(string name,int size):name(name),size(size){
    array = new unsigned int[size];
    string results;
    cin.ignore();
    getline(cin,results);
    Bool = StringToArray(results);
}
Vector::Vector(const Vector &v2){
    name=v2.name;
    size=v2.size;
    Bool=v2.Bool;
    array = new unsigned int[size];
    for(int i=0; i < size; i++)
        array[i]=v2.array[i];
}
Vector::Vector(){
    name="";
    size=0;
    array=NULL;
    Bool=true;
}
Vector::~Vector() {
    if(array)
        delete [] array;
}
bool Vector::StringToArray(string str){
    stringstream ss(str);
    for(int i=0; i < size ; i++){
        if(ss.eof())
            return false;
        ss >> array[i];
        cout << array[i];
    }
    if(!ss.eof())
        return false;
    return true;
}
bool Vector::getBool(){
    return Bool;
}
string Vector::getName(){
    return name;
}
void Vector::PrintArray(){
    for(int i=0; i < size; i++)
        cout << array[i] << " ";
    cout << endl;
}
Vector.h:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
#ifndef VECTOR_H_
#define VECTOR_H_
class Vector {
private:
    string name;
    int size;
    unsigned int *array;
    bool Bool;
public:
    Vector(string name,int size);
    Vector();
    Vector(const Vector &v2);
    virtual ~Vector();
    bool StringToArray(string str);
    bool getBool();
    string getName();
    void PrintArray();
};
#endif /* VECTOR_H_ */
 
    