Konstruktor verschachteln



  • Hi,

    Gibt es in C++ nicht die Möglichkeit, dass ich in einem Konstruktor einen anderen Konstruktor aufrufen kann? Sonst muss ich ja den ganzen Initialisierungskram ständig per copy und paste bei jedem Konstruktor neu einfügen.

    lg



  • Im neuen Standard geht das. Aber als ich das letzte Mal in die Liste der Compiler geguckt hatte, konnte das noch keiner.

    Edit: gcc 4.7 sollte das können.



  • Torch schrieb:

    Sonst muss ich ja den ganzen Initialisierungskram ständig per copy und paste bei jedem Konstruktor neu einfügen.

    Ganz böse. Erstelle dir eine separate "Init"-Methode.



  • Tachyon schrieb:

    Im neuen Standard geht das. Aber als ich das letzte Mal in die Liste der Compiler geguckt hatte, konnte das noch keiner.

    Edit: gcc 4.7 sollte das können.

    Doch, der GCC kann es (Delegating-Constructors), seit 4.7.



  • out schrieb:

    Tachyon schrieb:

    Im neuen Standard geht das. Aber als ich das letzte Mal in die Liste der Compiler geguckt hatte, konnte das noch keiner.

    Edit: gcc 4.7 sollte das können.

    Doch, der GCC kann es (Delegating-Constructors), seit 4.7.

    Hast Du sogar mit zitiert.



  • Tachyon schrieb:

    out schrieb:

    Tachyon schrieb:

    Im neuen Standard geht das. Aber als ich das letzte Mal in die Liste der Compiler geguckt hatte, konnte das noch keiner.

    Edit: gcc 4.7 sollte das können.

    Doch, der GCC kann es (Delegating-Constructors), seit 4.7.

    Hast Du sogar mit zitiert.

    😃 Tatsache, ich hatte es erst ohne edit gelesen, dann auf gnu.org nachgeschaut, dann erst auf zitieren geklickt. Hätte ich das Zitierte nochmals lesen sollen 🙄.



  • Sicherlich ...

    class A
    {
       int m_iMember;
       A(int param1) : m_iMember(param1)
       {
       }
    }
    
    clase B : class A
    {
       double m_dMember;
       B(int param1, double param2) : A(param1), m_dMember(param2)
       {
       }
    }
    


  • @BobDerKonstruktor Du hast das Thema (Delegating-Constructors) verfehlt.


  • Mod

    Ein zutreffendes Beispiel wäre

    struct Foo
    {
        constexpr Foo() : Foo(42) {}    // delegiert an Foo::Foo(int)
        constexpr Foo(int x) : x(x) {}
        int x;
    };
    
    constexpr Foo a = Foo();
    static_assert( a.x == 42, "" );
    

Anmelden zum Antworten