Wie kann ich C ++ - Objektelementvariablen im Konstruktor initialisieren?

Ich habe eine Klasse, die ein paar Objekte als Member-Variablen hat. Ich möchte nicht, dass die Konstruktoren für diese Member aufgerufen werden, wenn sie deklariert werden, also versuche ich, mich explizit an einen Zeiger auf das Objekt zu halten. Ich habe keine Ahnung was ich tue. o_O

In StackOverflow scheint es mir möglich zu sein, andere Beispiele für Objekt-Member-Variablen zu finden, aber normalerweise wird der Konstruktor sofort wie folgt aufgerufen:

class MyClass {
    public:
        MyClass(int n);
    private:
        AnotherClass another(100); // this constructs AnotherClass right away!
};

Aber ich will dasMyClass Konstruktor zum Aufrufen derAnotherClass Konstrukteur. So sieht mein Code aus:

BigMommaClass.h

#include "ThingOne.h"
#include "ThingTwo.h"

class BigMommaClass {

        public:
                BigMommaClass(int numba1, int numba2);

        private:
                ThingOne* ThingOne;
                ThingTwo* ThingTwo;
};

BigMommaClass.cpp

#include "BigMommaClass.h"

BigMommaClass::BigMommaClass(int numba1, int numba2) {
        this->ThingOne = ThingOne(100);
        this->ThingTwo = ThingTwo(numba1, numba2);
}

Hier ist der Fehler, den ich bekomme, wenn ich versuche zu kompilieren:

g++ -Wall -c -Iclasses -o objects/BigMommaClass.o classes/BigMommaClass.cpp
In file included from classes/BigMommaClass.cpp:1:0:
classes/BigMommaClass.h:12:8: error: declaration of âThingTwo* BigMommaClass::ThingTwoâ
classes/ThingTwo.h:1:11: error: changes meaning of âThingTwoâ from âclass ThingTwoâ
classes/BigMommaClass.cpp: In constructor âBigMommaClass::BigMommaClass(int, int)â:
classes/BigMommaClass.cpp:4:30: error: cannot convert âThingOneâ to âThingOne*â in assignment
classes/BigMommaClass.cpp:5:37: error: â((BigMommaClass*)this)->BigMommaClass::ThingTwoâ cannot be used as a function
make: *** [BigMommaClass.o] Error 1

Benutze ich den richtigen Ansatz, aber die falsche Syntax? Oder sollte ich aus einer anderen Richtung darauf kommen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage