呼び出し元ダイアログAとダイアログA内のボタン押下で生成されるダイアログBがありま
す。
CBDlg.cpp
void CBDlg::bbb()
{
int i = 5; // 例
}
とあり、
Aの方にも
void CBDlg::bbb()
{
int i = 5;
}
の i を渡らせたいです。
イメージとしては
CADlg* cad;
cad->bbb.i;
をイメージしています。
extern を使わないで取得したいのですがどのような方法があるのでしょうか?
下手な質問で申し訳ございませんがよろしくお願いします。
質問ヘタすぎ。つか「なにが言いたい?」
DialogBが表示され、そいつに対するユーザからの入力をDialogAで参照したい、ってこ
と?
class DialogB : public CDialog {
public:
int get_user_input() const { /* なんか返す */ }
...
};
DialogB dlb;
if ( dlb.ShowDialog() == ID_OK ) {
int value = dlb.get_user_input(); // ユーザ入力を得る
...
}
ってーことですか?
あるクラスのメンバ関数内の自動変数は、
その関数以外の如何なる場所からも参照
することはできません。
共用又は相互参照したい変数は、メンバ変数等の、
他から参照可能な場所に用意したらど~でしょう。
> if ( dlb.ShowDialog() == ID_OK ) {
おっと、MFCなら ShowDialog() 改め DoModal() かな。
ローカル変数は基本的にスコープ内部でのみ使えればよいデータを置く所です。
何故ならローカル変数はそのスコープを外れると消滅するからです。
他からも参照したいのであれば、参照したい時に存在している必要があります。
一般的にはクラスのメンバー変数にするのが普通だと思います。
クラスのメンバー変数であれば、クラスのインスタンスが存在している間は
変数も存在が保証されます。