Buonasera,
c'è un programma che mi sta facendo impazzire anche se sono ancora solo al suo inizio.
In pratica ho una classe che al suo interno contiene un vector di vector di oggetti Casella (classe definita da me)
Il problema è che non riesco a inserire gli oggetti Casella nel vector di vector, poichè visual studio mi da il seguente errore "Unhandled exception" etc etc
Non riesco a capire dove sia l'errore, mi aiutate?
Alla fine il costruttore della classe Tabella deve solo creare una Tabella di zeri.
Grazie
I MIEI DUE HEADER FILE PER LE CLASSI
Tabella
codice:
#include "Casella.h"
#include <vector>
#include <iostream>
class Tabella
{
private:
int n;
std::vector<std::vector<Casella*>> *tabella = new std::vector<std::vector<Casella*>>();
public:
Tabella(int n); /*Crea Tabella di Default a 0*/
~Tabella();
void mostraSudoku();
void esisteSuRiga();
void esisteSuColonna();
void esisteInRegione();
};
/*Crea Tabella di Default a 0*/
Tabella::Tabella(int n)
{
for (int i = 0; i < n; i++)
{
//for (int j = 0; j < n; j++)
//{
Casella *casella = new Casella(); //Il Costruttore di Default di Casella, genera numero=0 e fisso=false
tabella->at(i).push_back(casella); //sull'i-esimo vettore di vettore inseriamo in coda una Casella di valore 0
//}
}
};
Tabella::~Tabella()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
delete tabella->at(i).at(j); //sull'i-esimo vettore di vettore inseriamo in coda 0
}
tabella->at(i).clear(); //libera la memoria di ogni vettore
}
delete &this->n;
delete tabella;
tabella->clear();
}
void Tabella::mostraSudoku()
{
for (unsigned int i = 0; i < tabella->size(); i++)
{
for (unsigned int j = 0; j < tabella->at(i).size(); i++)
{
std::cout << tabella->at(i).at(j)->getNumero();
}
std::cout << std::endl;
}
};
codice:
#ifndef _SUDOKU_
#define _SUDOKU_
#include <vector>
#include <ctime>
#include <cstdlib>
class Casella {
private:
int numero;
bool fisso; //Se è Numero Fisso = TRUE, se Numero Non Fisso = FALSE
public:
Casella();
Casella(int numero);
~Casella();
void setNumero(int valore){ this->numero = numero; };
void setFisso(bool fisso){ this->fisso = fisso; };
int getNumero(){ return numero; };
bool getFisso(){ return fisso; };
};
Casella::Casella(int numero){
this->numero = numero;
this->fisso = false;
};
Casella::Casella(){
this->numero = 0;
this->fisso = false;
};
Casella::~Casella(){
delete &this->numero;
delete &this->fisso;
}
#endif
FILE CPP PER IL MAIN
codice:
#include "stdafx.h"
#include "Tabella.h"
#include <iostream>
//#include "Tabella.h"
int _tmain(int argc, _TCHAR* argv[])
{
int size = 0;
std::cout << "Inserisci il size di riga e colonna della Cella: " << std::endl;
std::cin >> size;
Tabella *tabella = new Tabella(size);
tabella->mostraSudoku();
system("PAUSE");
return 0;
}