- PR -

外部変数の記述について(グローバル変数)

投稿者投稿内容
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-03-29 17:21
ありがとうございました。
解決できました。
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-03-31 14:05
静的メンバ の場合は、
他のダイアログからは、アクセス可能になりました。
静的メンバでない場合は、
どのように、記述すればよいのでしょうか??

Aダイアログ        Bダイアログ
static int test  ←   XXX:XX::text で アクセス可能

Aダイアログ        Bダイアログ
int test      ←   の場合は、コンパイルエラー

C2597: 静的でないメンバ 'XX:X::test' への参照が正しくありません。

御願いいたします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-31 14:10
引用:

kenさんの書き込み (2006-03-31 14:05) より:

静的メンバ の場合は、他のダイアログからは、アクセス可能になりました。
静的メンバでない場合は、どのように、記述すればよいのでしょうか??


静的メンバもインスタンス メンバの場合も両方書いたつもりだったのですが...

  5 レス目

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-03-31 14:26
じゃんぬねっとさん、
ありがとうございます。

それは、分かっています。。

例えば、Aダイアログ
testに値を10入れたとして、コレがstaticで定義されている
場合は、Bダイアログから、XX:X::testで10は、アクセスは出来ました。。

インスタンス メンバの場合は、
Bダイアログ側でgcnewを新たに定義した場合、別もになってしまい、値が0に
なってしまうと思います、当然なことだとおもいますが・・・
staticではなく、Bでtestにアクセスするには、どうしたらいいのでしょうか?
それとも、それとも、Staicを使用しないといけないのでしょうか?
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-03-31 14:38
FormB側で、FormAのどのインスタンスの変数なのか特定できないからです。
Belutionラウンジでも書きましたが、Ownerプロパティを使ってください。

FormA.cpp
コード:

System::Void test::FormA::button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    FormB^ f = gcnew FormB;
    f->ShowDialog( this );
}



FormB.h
コード:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 int n = ( ( FormA^ )this->Owner )->test;
                 MessageBox::Show( n.ToString() );
             }

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-31 14:39
引用:

kenさんの書き込み (2006-03-31 14:26) より:

Bダイアログ側でgcnewを新たに定義した場合、別もになってしまい、値が0に
なってしまうと思います、当然なことだとおもいますが・・・


あれはあくまで例ですから...

Form に親子関係があるなら渡す側に子となる Form の参照を保持しておくかして、
メソッドなんかを通じて渡せば良いと思いますが...

ひょっとして、これも「それは、分かっています。。」になりますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-03-31 14:54
じゃんぬねっとさん
レスありがとうございます。

>ひょっとして、これも「それは、分かっています。。」になりますか?
すみません、言い方悪かったでしょうか??、気をつけます。

>Form に親子関係があるなら渡す側に子となる Form の参照を保持しておくかして、
保持の仕方のコードは、どのように書けばいいのでしょうか??

>メソッドなんかを通じて渡せば良いと思いますが...
FormB^ f = gcnew FormB;
f->ShowDialog( this );

こうゆう事でいいのでしょうか??

上記の場合は、Bからどのように参照できるように
なるのでしょうか?
コードをどのように書けばよいのでしょうか??

よろしく御願いいたします。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-03-31 15:00
引用:

FormB^ f = gcnew FormB;
f->ShowDialog( this );

こうゆう事でいいのでしょうか??
御願いいたします。


あたかも、自分が考えたかのようにしていますね。

もう回答するのをやめます。全然意思が伝わっていないようですので。

追伸
上で出した私のソースは動きます。確認済みです。

スキルアップ/キャリアアップ(JOB@IT)