I've got a class that has a couple of objects as member variables. I don't want the constructors for these members to be called when declared, so I'm trying to hang onto a pointer to the object explicitly. I have no idea what I'm doing.
I thought maybe I could do the following, where the constructor is called immediately when initializing the object member variable:
class MyClass {
public:
MyClass(int n);
private:
AnotherClass another(100); // Construct AnotherClass right away!
};
But I want the MyClass
constructor to call the AnotherClass
constructor. Here's what my code looks like:
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);
}
Here's the error I'm getting when I try to compile:
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 aThingTwo* BigMommaClass::ThingTwoa
classes/ThingTwo.h:1:11: error: changes meaning of aThingTwoa from aclass ThingTwoa
classes/BigMommaClass.cpp: In constructor aBigMommaClass::BigMommaClass(int, int)a:
classes/BigMommaClass.cpp:4:30: error: cannot convert aThingOnea to aThingOne*a in assignment
classes/BigMommaClass.cpp:5:37: error: a((BigMommaClass*)this)->BigMommaClass::ThingTwoa cannot be used as a function
make: *** [BigMommaClass.o] Error 1
Am I using the right approach, but the wrong syntax? Or should I be coming at this from a different direction?
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…