Oggetto in un oggetto con dentro un oggetto

di Anonimizzato20142 il
2 risposte
Salve a tutti. Ho da poco iniziato la programmazione ad oggetti e mi viene in mente questo problema: immaginiamo che una persona possieda una casa, e che quindi abbia un certificato di proprietà di quella casa. Poi abbiamo la casa, che ha un proprietario, e quindi un certificato di appartenenza ad una persona. Ora cerchiamo di scrivere due classi, casa e persona, la persona deve avere un certificato di proprietà che è un puntatore a un oggetto casa, e la casa deve avere un puntatore a un oggetto proprietario (lo stesso che la possiede). Il mio problema è che se dichiaro prima la classe persona e poi la casa, la casa può avere un puntatore alla persona, perché la persona è dichiarata prima, ma la persona non può. Come faccio a fare in modo che l'una possa puntare all'altra e viceversa? Qiesto problema ce l'ho anche se cerco di inserire dei metodi in una classe che richiedono come parametri un puntatore a oggetto, il quale ha altri metodi che richiedono un puntatore all'altro oggetto. Come faccio?

2 Risposte

  • Forward declaration.
    
    class Casa; // forward declaration
    
    class Persona {
        Casa* casa;
        public:
            Persona(Casa* c);
    };
    
    class Casa {
        Persona* p;
        public:
            Casa(Persona* p);
    };
    // definizione metodi nel .cpp dopo aver definito le classi. No metodi inline nelle classi.
    
    
  • Ah grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte