- - PR -
外部変数の記述について(グローバル変数)
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-29 15:28
本当にやりたいことはそれなんですか?
あ、やりたい事は前者なんですね。すみません。後者だと思っていました。 _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2006-03-29 15:37
囚人さん、
レスありがとう御座います 実現したいことは、前者にあたります。 >本当にやりたいことはそれなんですか? >コード: --------------------------------------------------------------------------- >public ref class Dlg_A : public System::Windows::Forms::Form >{ > int test; >} --------------------------------------------------------------------------- 整理いたします。。 上記のような場合があって、 ある操作があって、(ボタンクリック等)Dlg_AからDlg_Bを 表示させて、Dlg_Bから、Dlg_Aのメンバの変数『int Test』 のデータを値を取得したいと思っています。。。 --------------------------------------------------------------------------- public ref class Dlg_B_Load(System:bject^ sender, System::EventArgs^ e){ int Test_B; Test_B = Test; ←Testは、Dlg_AのTest変数。 } [ メッセージ編集済み 編集者: ken 編集日時 2006-03-29 15:38 ] [ メッセージ編集済み 編集者: ken 編集日時 2006-03-29 15:39 ] | ||||||||||||
|
投稿日時: 2006-03-29 15:41
あの... すでに "解答" しているつもりなんですけど... (´;ω;`) 5 レス目 華麗にスルーされていらっしゃるようなので、理由が欲しいところです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-03-29 15:56
レスありがとうございます。
スルーしたわけではありません・・ 試してみたのですが、エラーになってしました。 Dlg_A --------------------------------------------------------------- public ref class Dlg_A: public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: ここにコンストラクタ コードを追加します // } static int test; ← 定義 --------------------------------------------------------------- Dlg_B private: System::Void def_Load(System:bject^ sender, System::EventArgs^ e) { int bb; bb = Dlg_A::test; } c:\documents and settings\ken\my documents\visual studio 2005\projects\abc\abc\def.h(89) : error C2653: 'Dlg_A' : 識別子がクラス名でも名前空間名でもありません。 c:\documents and settings\ken\my documents\visual studio 2005\projects\abc\abc\def.h(89) : error C2065: 'test' : 定義されていない識別子です。 何か間違っていますでしょうか?? 御願いいたします。 | ||||||||||||
|
投稿日時: 2006-03-29 16:09
やはり宣言と定義をわけないと使えませんね。
理由は向こうにも書きましたが、 FormAはFormBが何者かわからなければならない。 FormBもFormAが何者かわからなければならない。 という状態になっています。 FormAでFormBを使うところを .cpp に書くことで回避できると思います。 ここで .cpp では #include <FormB.h> をしておかないといけない。 (FormBからは #include <FormA.h>があれば普通に .h に書いても問題ない) [ メッセージ編集済み 編集者: Blue 編集日時 2006-03-29 16:10 ] | ||||||||||||
|
投稿日時: 2006-03-29 16:15
#include "abc.h"
をしていないか、 using namespace Dlg_Aの属する名前空間 をしていないか、 もしくはそのどちらもしていないか、だったりして。 #編集 bb = Dlg_A::test が出来ない理由の事です。 _________________ 囚人@わんくま同盟 囚人のジレンマな日々 [ メッセージ編集済み 編集者: 囚人 編集日時 2006-03-29 16:19 ] | ||||||||||||
|
投稿日時: 2006-03-29 16:21
レスありがとうございます。
分かるように記述するには、 どのように書けば良いのでしょうか? 現在、下記のような、状態になっています。。 御願いいたします。 >やはり宣言と定義をわけないと使えませんね。 >理由は向こうにも書きましたが、 >FormAはFormBが何者かわからなければならない。 >FormBもFormAが何者かわからなければならない。 >という状態になっています。 >FormAでFormBを使うところを .cpp に書くことで回避できると思います。 >ここで .cpp では #include <FormB.h> をしておかないといけない。 >(FormBからは #include <FormA.h>があれば普通に .h に書いても問題ない) FormA.h #include "FormB.h" static int test ← ここのメンバ変数になっています。 FormA.cpp #include "FromA.h" ------------------------------------------------ FormB.h #include "FromA.h" FormB.cpp #include "FromB.h" | ||||||||||||
|
投稿日時: 2006-03-29 16:39
FormA.h
FormA.cpp
FormB.h
FormB.cpp は別になくても良い。 |