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ì:
Ovviamente costruita la matrice avrei chiamato resize per ridimensionare i singoli vettori al numero delle colonne.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(); };
Poi avrei aggiunto un controllo sull'uso di vettore nel caso non fosse stato inizializzato.
Ancora meglio avrei fatto:
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).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(); };
Spero di averci acchiappato![]()

Rispondi quotando