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

    C++ Passare un oggetto al costruttore

    Ciao a tutti,
    so che in rete ci sono tanti che fanno questa domanda, ma non mi č ancora chiaro come si faccia a passare al costruttore di una classe A, l'oggetto di un'altra classe B ( che tra l'altro č la derivata di un'altra classe C). Ho letto che bisogna usare il copy constructor, ho provato, ma mi dā problemi con la classe madre (C). Al di lā del mio caso, vorrei vedere un esempio semplice e chiaro, con il codice del main e l'implementazione, anche se semplice.
    Ultima modifica di cristina1996; 23-04-2017 a 11:46

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Intendevi questo?
    codice:
    class Base {
        protected:
            int campo1;
            string campo2;
        public:
            Base(int c1, string s1) : campo1(c1), campo2(s1) {}
    };
    
    class Derived : public Base {
        protected:
            double campo3;
        public:
            Derived(int c1, string s1, double d1)  : Base(c1, s1), campo3(d1) {}
    };
    
    class Container {
        Derived d;
        public:
            Container(const Derived& md) : d(md) {}
    };
    
    
    int main() {
        Derived d(10, "ciao", 4.0);
        Container c (d);
    
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Grazie, alla fine mi mancava questo
    codice:
     : d(md) 
    . Sai se č l'unico modo per farlo? Perchč avevo giā provato a farlo una volta senza costruttore di copia: semplicemente nel main avevo passato un oggetto al costruttore di un'altra classe e senza parametri, solo il nome dell'oggetto e funzionava. Poi ho riprovato a fare nello stesso modo, ma si aspettava tutti i parametri... Boh

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Qui č l'esempio completo, con l'implementazione dei costruttori di copia.
    Nota quello in Derived. In pratica ogni costruttore richiama il corrispondente nella classe base, dato che i costruttori sono esplicitati.

    codice:
    class Base {
        protected:
            int campo1;
            string campo2;
        public:
            Base(int c1, string s1) : campo1(c1), campo2(s1) {}
            Base(const Base& b) : campo1(b.campo1), campo2(b.campo2) {
            }
    
    };
    
    class Derived : public Base {
        protected:
            double campo3;
        public:
            Derived(int c1, string s1, double d1)  : Base(c1, s1), campo3(d1) {}
            Derived(const Derived& d) : Base( (const Base&) d), campo3(d.campo3){
              
            }
    };
    
    class Container {
        Derived d;
        public:
            Container(const Derived& md) : d(md) {}
    };
    
    
    
    int main() {
        Derived d(10, "ciao", 4.0);
        Container c (d);
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Bene, grazie mille!

Tag per questa discussione

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