Konstruktor mit Übergabeparametern



  • Hallo Community,

    ich hoffe ich bin im richtigen Forum. Mein Problem ist folgendes: ich habe mir eine eigene Klasse (MFC-Klasse) geschrieben. Diese Klasse hat neben dem Standardkonstruktor auch einen Konstruktor mit Übergabeparameter.

    //foo.h
    class foo : public CObject
    {
    public:
    	foo();
    	foo(const CString Bezeichner);
    //
    }
    

    Diese Klasse soll als Member einer anderen Klasse dienen.

    //foo2.h
    #include "foo.h"
    class foo2 : public CObject
    {
    public:
    	foo2();
    
    	foo m_foo(_T("Test")); //<-das geht leider nicht
    //
    }
    

    Wie kann ich im Header einer Klasse eine andere Klasse mit Übergabeparameter definieren?



  • Du musst den Aufruf in die Initialisierungsliste machen:

    class foo2 : public CObject
    {
    public:
        foo2();
    
        foo m_foo(_T("Test")); //<-das geht leider nicht
    //
    };
    
    foo2::foo2()
    : m_foo(_T("Test"))
    {
    
    }
    


  • ihoernchen schrieb:

    Du musst den Aufruf in die Initialisierungsliste machen:

    class foo2 : public CObject
    {
    public:
        foo2();
    
        foo m_foo(_T("Test")); //<-das geht leider nicht
    //
    };
    
    foo2::foo2()
    : m_foo(_T("Test"))
    {
    
    }
    

    Hi ihoernchen,

    vielen Dank für die Hilfe. D.h., in der Headerdatei wird der Standardkonstruktor gezogen und in der cpp-Datei der Zielklasse initialisiere ich in deren Konstruktor. Sehe ich das so richtig? (Ich kanns leider grad nicht ausprobieren, da ich hier kein VS habe).


  • Mod

    Unregister schrieb:

    vielen Dank für die Hilfe. D.h., in der Headerdatei wird der Standardkonstruktor gezogen und in der cpp-Datei der Zielklasse initialisiere ich in deren Konstruktor. Sehe ich das so richtig? (Ich kanns leider grad nicht ausprobieren, da ich hier kein VS habe).

    In der Headerdatei wird hier der Standardkonstruktor nur deklariert.
    In der Definition des Konstruktors (in der CPP Datei) werden dann die Member, die eine Initialisierung benötigen aufgeführt wie ihoernschen das auch schreibt:

    foo2::foo2()
    : m_foo(_T("Test"))
    {
    
    }
    


  • Martin Richter schrieb:

    In der Headerdatei wird hier der Standardkonstruktor nur deklariert.
    In der Definition des Konstruktors (in der CPP Datei) werden dann die Member, die eine Initialisierung benötigen aufgeführt wie ihoernschen das auch schreibt:

    foo2::foo2()
    : m_foo(_T("Test"))
    {
    
    }
    

    Also wenn ich das so mache, dann kommt:

    error C2436: 'm_foo': Memberfunktion oder geschachtelte Klasse in der Liste der Konstruktorinitalisierungen
    


  • Sorry, mein Fehler, jetzt gehts... Hatte in der Headerdatei die Klammern noch da stehen und das geht natürlich nicht. Aber vielen Dank euch beiden...


Log in to reply