終了時にプログラムがクラッシュします。エラーをさかのぼると、クラス gWSW のデストラクタにたどり着きました。問題は次のとおりです。
クラス gShop: public gTexture があります。このクラスでは、クラス gWSW のオブジェクトへのポインターを宣言して初期化します。
gWSW には、クラス gTexture で宣言および初期化されたオブジェクトへのポインターが再びあります。
ポインタに対して delete を呼び出すことで、すべてのクラスに適切なデストラクタを与えました。
ESCを押してすべてのデスクタクタが呼び出されるまで、プログラムは正常に実行されます。ここで gWSW のデストラクタでクラッシュします。それは私がそのようなものを持っているということです:
class gShop : public gTexture
{
public:
gShop(): pWSW(new gWSW()) {}
~gShop(){delete pWSW;}
gWSW* pWSW;
};
class gWSW
{
public:
gWSW():gWSW: pTextuer(new gTexture()) {}
~gWSW(){delete pTexture;}
gTexture* pTexture;
};
class gTexture
{
public:
gTexture() {}
~gTexture();
//... a pointer to char[] here but will be also deleted in its destructor
};
クラッシュする前の最後の呼び出しは ~gWSW() にあります。「delete pTexture」をコメントアウトすると、プログラムはエラーやクラッシュなしで正常に終了します。続行してコメントを残す前に、問題が何であるかを理解したい.