J'ai une classe qui a quelques objets comme variables membres. Je ne veux pas que les constructeurs de ces membres soient appelés lorsqu'ils sont déclarés. J'essaie donc de conserver un pointeur sur l'objet de manière explicite. Je n'ai aucune idée de ce que je suis en train de faire.
J'ai pensé que je pourrais peut-être faire ce qui suit, où le constructeur est appelé immédiatement lors de l'initialisation de la variable membre de l'objet :
class MyClass {
public:
MyClass(int n);
private:
AnotherClass another(100); // Construct AnotherClass right away!
};
Mais je veux le MyClass
pour appeler le AnotherClass
constructeur. Voici à quoi ressemble mon code :
FIle BigMommaClass.h
#include "ThingOne.h"
#include "ThingTwo.h"
class BigMommaClass {
public:
BigMommaClass(int numba1, int numba2);
private:
ThingOne* ThingOne;
ThingTwo* ThingTwo;
};
FIle BigMommaClass.cpp
#include "BigMommaClass.h"
BigMommaClass::BigMommaClass(int numba1, int numba2) {
this->ThingOne = ThingOne(100);
this->ThingTwo = ThingTwo(numba1, numba2);
}
Voici l'erreur que j'obtiens lorsque j'essaie de compiler :
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
Est-ce que j'utilise la bonne approche, mais la mauvaise syntaxe ? Ou devrais-je aborder la question sous un angle différent ?