Como posso inicializar variáveis de membro do objeto C ++ no construtor?
Eu tenho uma classe que tem alguns objetos como variáveis de membro. Eu não quero que os construtores para esses membros sejam chamados quando declarados, então estou tentando segurar um ponteiro para o objeto explicitamente. Não faço ideia do que estou fazendo. o_O
No StackOverflow, pareço ser capaz de encontrar outros exemplos de variáveis de membro de objeto, mas geralmente o construtor é chamado imediatamente, assim:
class MyClass {
public:
MyClass(int n);
private:
AnotherClass another(100); // this constructs AnotherClass right away!
};
Mas eu quero oMyClass
construtor para chamar oAnotherClass
construtor. Aqui está o meu código:
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);
}
Aqui está o erro que estou recebendo quando tento compilar:
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
Estou usando a abordagem correta, mas a sintaxe errada? Ou eu deveria estar vindo de uma direção diferente?