07/05/02 16:48:27
初歩的な質問で申し訳ありません。
VC++でダイアログベースのプログラムの作成中です。
プロシージャ内でクラスを宣言して使用したいのですが、エラーになります。
たとえば以下のようなプログラムのがあるとします(Fooクラスが別途存在します)
LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg) {
case WM_INITDIALOG:
Foo foo;
return FALSE;
case WM_HOGE:
foo.hoge();
default:
return FALSE;
}
return TRUE;
}
この場合、以下のエラーが出力されます
'foo' の初期化が 'case' ラベルによって行われませんでした。
調べた結果、WM_HOGE内でFooクラスの宣言がなされてない(初期化がされていない)のでエラーになっている、ということはわかりました。
ここで質問なのですが、Fooクラスの宣言というのは一般的にどこで行うべきなのでしょうか?
プロシージャの最初のswitchの外で宣言してしまってもいいものなのでしょうか。