静的変数を宣言したらクラスウイザードでエラーが発生

[戻る]
竹の子ビッチ 2002/05/11(土) 16:10:58
win2000 VC++6.0 sp5 MFC使用

いつもお世話になっています。

CButtonExというクラスのメンバ関数の中で
他クラス(CSampleDlg)のPublicメンバ変数を参照したいので
SampleDlgの変数をStaticで宣言するように変更しました。
そして、SampleDLGの.hだけでなく.cppにも変数宣言を付け加えました。
ビルドも通り問題なく動作しましたが、
SampleDlgのクラスウイザードを開くと
【Parsing error ";"が必要です。
 インプットライン static CButtonExm_button】
というエラー出ます。
CButtonExはSampleDlgで宣言した変数の型(クラス)で、
m_buttonが変数(オブジェクト)です。
これはCSanpleDlgのクラスウイザードのメンバ変数で宣言したものです。
何故エラーなのかわかりません。

また、
クラスのメンバ関数の中で
他クラスのPublicメンバ変数を参照するには
静的変数で宣言するしか方法はないのでしょうか。

何方か良い方法がありましたら
アドバイスお願いします。

そのメンバ変数を静的変数で宣言するしかないのでしょうか。



 

Bun 2002/05/11(土) 16:42:25
> そのメンバ変数を静的変数で宣言するしかないのでしょうか。

んなことありません。

ボタンとダイアログの間柄なら
一般的にボタンの親がダイアログです。つーことは。

CSampleDlg の(パブリック)メンバ変数 m_nHoge は
ボタンクラス内で

CSampleDlg* pDlg = (CSampleDlg*)GetParent(); // などとして

pDlg->m_nHoge でアクセスできます。

竹の子ビッチ 2002/05/11(土) 20:59:15
[[解決]]
Bunさん

感謝です。
ご指摘のやり方で参照出来ました。

以前のように
IDCコンロールと関連してるメンバ変数を
静的変数に変える方法では出来ないのだろうか。

しかし
CButtonはCDialogの子ではなく
対等の位置に属してるのではないでしょうか。

Bun 2002/05/12(日) 07:33:39
>CButtonはCDialogの子ではなく
>対等の位置に属してるのではないでしょうか。

GetParent()で○なのに、この発言も○なんですか?
矛盾していませんか?

竹の子ビッチ 2002/05/12(日) 15:47:52
確かにその通りですね。
失礼しました。

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