お世話になります。環境はVC++6.0 WinNTです。
クラスA(基本クラス:CWinApp)から
クラスB,C,Dの関数(B,Cは基本クラスなし、DはCDialog)
を呼びたいので、それぞれのクラスを呼ぶポインタをヘッダで宣言し
コンストラクタでnewして初期化したのち
クラスAの「InitInstance」でnewして
デストラクタでdeleteするコードを書いたのですが
newする時点で落ちてしまいます・・・。
ちなみに、落ちる直前にポインタの中身をクイックウォッチで見ると
「変数にはスタックフレームが必要です」とエラーが出ています。
コンストラクタ
A::A()
:B( NULL ),
C( NULL ),
D( NULL )
{
}
デストラクタ
A::~A()
{
delete m_pB ;
delete m_pC ;
delete m_pD ;
}
BOOL A::InitInstance()
{
m_pB = new B;
m_pC = new C;
m_pD = new D;
}
VCを勉強し始めたのが5ヶ月前。
今回、初めてのまともなプロジェクトなのでかなり戸惑っています。。。
よろしくお願いいたします。
コンストラクタがおかしい気がします。
:B( NULL ),
C( NULL ),
D( NULL )
とありますが、B、C、D というのは、A の基本クラス名でも、メンバ変数名でもないので、よ
く理解できません。
ポインタ変数を初期化しようとしているのなら、
:m_pB( NULL ),
m_pC( NULL ),
m_pD( NULL )
とする必要があります。
InitInstance 内の new と、デストラクタの delete は、特に問題はないはずです。
解決しました!!
返信遅れてすみません。
どうもありがとうございました。m(_ _)m