编辑:Big Aplogies - 我在 gUniverse 之后声明了 gTime,但在被要求提供更多代码后将其发布在此处错误。我将它与我的程序的早期版本混淆了,实际上它是相反的。
我有一个 gUniverse 类,其中包含一个指向 gTime 类的另一个对象的实例的指针的声明;
class gUniverse;
class gTime;
class gUniverse
{
public:
gUniverse():UniverseTime(new gTime(1) ){}
~gUniverse();
gTime* UniverseTime;
};
class gTime
{
public:
gTime();
gTime(int start);
void StartTimer();
double ElapsedTime();
private:
clock_t StartTime;
clock_t StopTime;
};
这不会与“不完整类型”一起编译。
但是,当我做出外部声明时,即:
class gUniverse
{
public:
gUniverse();
~gUniverse();
gTime* UniverseTime;
};
gUniverse::gUniverse():UniverseTime(new gTime(1) )
{
}
那么现在这一切都很酷。我想了解问题出在哪里,如果第二种情况可以做,因为我负责所有的析构函数和复制构造函数。