Konstruktor vor Standart Konstruktor

DuffCola

Mitglied
Wie kann ich wenn ich z.B. eine Klasse Foo habe:
Code:
class Foo
{
public:
    Foo(int i)
    {
        // Tu was....
    }
    ~Foo()
    {
        // Tu was...
    }
};
und jetzt in einer anderen Klasse eine Member von diesem Typ erstelle:
Code:
class BlaBla
{
public:
    BlaBla()
    {
        // Tu was
    }
    ~BlaBla()
    {
        // Tu was
    }
private:
    Foo foo;    
};
einen direkten Konstruktor von der KLasse Foo aufrufen, sodass die Klasse Foo keinen Standart Konstruktor braucht.
Weil bis jetzt gäbe es ja eine Fehlermeldung, da die KLasse Foo ja keinen Standart konstruktor hat.
Ich dachte eigentlich, dass das so geht, aber anscheinend wird schon vorher versucht einen Standart Konstruktor aufzurufen.
Code:
class BlaBla
{
public:
    BlaBla() : Foo(123)
    {
        // Tu was
    }
    ~BlaBla()
    {
        // Tu was
    }
private:
    Foo foo;    
};
 
Das funktioniert schon so, nur musst du das foo klein schreiben. Wenn du das Foo groß schreibst, ist das ja die Klasse und das macht man nur so, wenn man etwas, von dem man erbt, initialisieren möchte, da man da ja keinen Objektnamen hat.
Bei einem normalen Objekt in der Klasse musst du das allerdings mit dem Objektnamen (hier: foo) machen.

Lg
 
Zurück