innerhalb der klasse keine extended-constructor



  • N'Abend,

    ich wollte folgenden code compilieren:

    class a
    {
    private:
     //...
    public:
     a(int index) 
     {}
    };
    
    class b
    {
    private:
     //funktioniert
     a nummer_eins;
     // das funktioniert nicht
     a nummer_zwei(0);
    };
    

    wieso kann ich innerhalb einer klasse kein element einer anderen klasse mit einem extended-constructor aufrufen? gibt es da überhaupt eine möglichkeit?

    mfg freaker



  • Du musst das Objekt in der Initalisierungsliste initialisieren, schaut so aus:

    class b {
       private: 
                A objA;
       public: 
                b(): objA(445) { }
    };
    


  • Das geht mit einer Initialisierungsliste:

    #include <iostream>
    
    using namespace std;
    
    class a
    {
    public:
      a()
      {
        cout << "a konstruiert." << endl;
      };
    
      a(int arg)
      {
        cout << "a mit " << arg << " konstruiert." << endl;
      };
    };
    
    class b
    {
    private:
      a obj;
    public:
      b():obj(0)
      {
        cout << "b konstruiert." << endl;
      };
    };
    
    int main(int argc, char** argv)
    {
      b b_obj;
      return 0;
    };
    


  • ich danke euch für eure hilfe


Anmelden zum Antworten