Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    effettivamente è la prima volta che tratto il polimorfismo quindi sono abbastanza disorientato.
    quindi per creare un vettore di oggetti, devo creare un vettore di puntatori a oggetti( cosa che io avevo già intenzione di fare );
    il problema sta però dopo: per ottenere un vettore di DIVERSE classi figlie, come le inserisco nel vettore se in questo ho solo puntatori a classe madre( come mi hai detto te ) ?

    mettiamo per esempio che io abbia una classe madre con una sola variabile: int a;

    ho poi due classi figlie in cui:
    -nella prima ho una seconda variabile : int b;
    -anche nella seconda classe figlia ho una seconda variabile: int c;

    il vettore che devo creare deve contenere sia elementi della prima classe figlia che della seconda.

    si può fare?

    a questo punto me la potete implementare questa "struttura" di classi?

    grazie mille per la vostra disponibilità Mitaly e MegAlchimista

  2. #2
    Quote Originariamente inviata da maluz1 Visualizza il messaggio
    effettivamente è la prima volta che tratto il polimorfismo quindi sono abbastanza disorientato.
    quindi per creare un vettore di oggetti, devo creare un vettore di puntatori a oggetti( cosa che io avevo già intenzione di fare );
    il problema sta però dopo: per ottenere un vettore di DIVERSE classi figlie, come le inserisco nel vettore se in questo ho solo puntatori a classe madre( come mi hai detto te ) ?
    Un puntatore a classe figlia può essere assegnato ad un puntatore a classe base, dato che classe_figlia è una classe_base (principio di sostituzione di Liskov).
    mettiamo per esempio che io abbia una classe madre con una sola variabile: int a;

    ho poi due classi figlie in cui:
    -nella prima ho una seconda variabile : int b;
    -anche nella seconda classe figlia ho una seconda variabile: int c;

    il vettore che devo creare deve contenere sia elementi della prima classe figlia che della seconda.

    si può fare?
    Certo, basta memorizzare i puntatori a classe figlia nel vettore, esattamente come faresti con la classe-genitore.
    codice:
    std::vector<classe_base *> vec;
    vec.push_back(new classe_base);
    vec.push_back(new classe_figlia);
    (ricordandosi poi alla fine di fare tutte le delete del caso)
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.