newで落ちる

[戻る]
とも [E-Mail] 2002/03/13(水) 15:48:59
お世話になります。環境は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ヶ月前。
今回、初めてのまともなプロジェクトなのでかなり戸惑っています。。。
よろしくお願いいたします。

TAD [E-Mail] 2002/03/14(木) 07:42:04
コンストラクタがおかしい気がします。
  :B( NULL ),
   C( NULL ),
   D( NULL )
とありますが、B、C、D というのは、A の基本クラス名でも、メンバ変数名でもないので、よ
く理解できません。

ポインタ変数を初期化しようとしているのなら、
  :m_pB( NULL ),
   m_pC( NULL ),
   m_pD( NULL )
とする必要があります。

InitInstance 内の new と、デストラクタの delete は、特に問題はないはずです。

とも [E-Mail] 2002/03/15(金) 15:28:22
[[解決]]
解決しました!!
返信遅れてすみません。
どうもありがとうございました。m(_ _)m

古いスレッドには追加発言できません。