編集: 大きな謝罪 - gUniverse の後に gTime を宣言しましたが、より多くのコードを提供するように求められた後、間違ってここに投稿しました。私はそれを私のプログラムの以前のバージョンと混同しましたが、実際には反対でした.
クラスgTimeの別のオブジェクトのインスタンスへのポインターの宣言を含むクラスgUniverseがあります。
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) )
{
}
それから、これはすべてクールです。すべてのデストラクタとコピー コンストラクタを処理することを考えると、何が問題なのか、2 番目のケースが問題ないかどうかを理解したいと思います。