Spero di aver capito
Se definisco almeno un costruttore (anche se poi questo costruttore ha solo un parametro di default) il costrutture di default (quello senza parametri per intenderci) non viene creato.
Siccome l'operatore di new può creare solo oggetti con costruttore di default il problema è proprio lì.
Io avrei fatto così:
codice:
class vettore
{
int *v,size;
public:
vettore(int); //costruttore normale
explicit vettore(); // costruttore di default che inizializza v a NULL.
~vettore();//distruttore
void resize(int); // Per ridimensionare il vettore.
vettore(const vettore &op2); //costruttore di copia
vettore operator+(vettore op2);
vettore operator=(vettore op2);
vettore operator++(int notused);
vettore operator*(int op2);
void dispay();
};
Ovviamente costruita la matrice avrei chiamato resize per ridimensionare i singoli vettori al numero delle colonne.
Poi avrei aggiunto un controllo sull'uso di vettore nel caso non fosse stato inizializzato.
Ancora meglio avrei fatto:
codice:
class vettore
{
int *v,size;
protected:
explicit vettore(); // costruttore di default che inizializza v a NULL.
friend class matrice;
public:
vettore(int); //costruttore normale
~vettore();//distruttore
void resize(int); // Per ridimensionare il vettore.
vettore(const vettore &op2); //costruttore di copia
vettore operator+(vettore op2);
vettore operator=(vettore op2);
vettore operator++(int notused);
vettore operator*(int op2);
void dispay();
};
In questo modo solo la matrice avrebbe potuto creare i vettori non inizializzati e successivamente inizializzarli, eliminando così il controllo sui vettori non inizializzati (perchè sicuramente matrice sa quello che fa).
Spero di averci acchiappato