Salve vorrei sapere se è possibile dichiarare dei vettori di oggetti diversi, che però hanno in comune in fatto di essere derivati dalla medesima classe base...
Grazie 1000
Salve vorrei sapere se è possibile dichiarare dei vettori di oggetti diversi, che però hanno in comune in fatto di essere derivati dalla medesima classe base...
Grazie 1000
Puoi farlo con un vettore di puntatori a questi oggetti.
Amaro C++, il gusto pieno dell'undefined behavior.
esatto io ho una classe virtuale dalla quale derivo altre 2 classi, vorrei creare un vettore contenente oggetti istanziati da entrambi le classi derivate...
Crei un vettore di puntatori ad oggetti di tipo classe base, quindi lo popoli con puntatori ad oggetti di tipo derivato.
ho fatto così:
ClasseBase *Vet;
Vet = (ClasseBase *) malloc(n*sizeof(ClasseBase *)); //n è il numero di elementi del vettore;
ho provato a farlo con la new, ma ho dei problemi perchè ClasseBase è virtuale,
per deallocare correttamente la memoria posso fare semplicemente Vet=NULL; o devo usare un altro metodo?
Usare malloc su oggetti è sempre un grosso errore e fonte di guai.
La soluzione rognosa è:
La soluzione elegante è:Codice PHP:
Base** b = new Base*[12];
b[0] = new Geppo;
b[0]->metodo();
delete b[0];
delete[] b;
Codice PHP:
std::vector<Base*> vec;
vec.push_back(new Deriv);
vec[index]->metodo();
std::vector<Base*>::iterator it = vec.begin();
while (it != vec.end()) {
delete *it;
++it;
}