Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++] Vettori di ogetti diversi derivati dalla stessa classe

    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

  2. #2
    Puoi farlo con un vettore di puntatori a questi oggetti.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Intendi dire "oggetti di tipo diverso" ?

  4. #4
    esatto io ho una classe virtuale dalla quale derivo altre 2 classi, vorrei creare un vettore contenente oggetti istanziati da entrambi le classi derivate...

  5. #5
    Crei un vettore di puntatori ad oggetti di tipo classe base, quindi lo popoli con puntatori ad oggetti di tipo derivato.

  6. #6
    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?

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Usare malloc su oggetti è sempre un grosso errore e fonte di guai.

    La soluzione rognosa è:
    Codice PHP:
        Base** = new Base*[12];
        
    b[0] = new Geppo;
            
    b[0]->metodo();
            
    delete b[0];
        
    delete[] b
    La soluzione elegante è:

    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;
        } 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.