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メンバ変数を参照するには
静的変数で宣言するしか方法はないのでしょうか。
何方か良い方法がありましたら
アドバイスお願いします。
そのメンバ変数を静的変数で宣言するしかないのでしょうか。
> そのメンバ変数を静的変数で宣言するしかないのでしょうか。
んなことありません。
ボタンとダイアログの間柄なら
一般的にボタンの親がダイアログです。つーことは。
CSampleDlg の(パブリック)メンバ変数 m_nHoge は
ボタンクラス内で
CSampleDlg* pDlg = (CSampleDlg*)GetParent(); // などとして
pDlg->m_nHoge でアクセスできます。
Bunさん
感謝です。
ご指摘のやり方で参照出来ました。
以前のように
IDCコンロールと関連してるメンバ変数を
静的変数に変える方法では出来ないのだろうか。
しかし
CButtonはCDialogの子ではなく
対等の位置に属してるのではないでしょうか。
>CButtonはCDialogの子ではなく
>対等の位置に属してるのではないでしょうか。
GetParent()で○なのに、この発言も○なんですか?
矛盾していませんか?
確かにその通りですね。
失礼しました。