- - PR -
構造体参照について (C++/CLI)
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-01 15:53
Form1.hとForm2.hがお互いを参照していますよね。
それがうまく行かない原因だと思います。 Form2.hでは、Form1.hをincludeするのではなく、 ref struct AAA; とクラスの宣言だけしてみてください。 そうすると、Form2.h内ではAAAのメンバにどんなものがあるか分からない状態なのでForm2コンストラクタの実装をForm2.hに書くことはできません。 form2.cppなどに書いてください。 |
|
投稿日時: 2007-11-06 18:42
すみません。回答に気付けませんでした。
回答頂いた方法で色々やってみたのですが、 やはりエラーが出てしまいました。 error「重複したマネージ型に異なる参照状態が指定されています。」 ---------------------------------- Form1.h ---------------------------------- #include "Form2.h" namespace test { // 構造体 public ref struct AAA { int a; int b; int c; }; public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { AAA^ data = gcnew AAA(); data->a = 1; data->b = 2; data->c = 3; Form2^ fm2 = gcnew Form2( data ); fm2->ShowDialog(); (省略) ---------------------------------- Form2.h ---------------------------------- namespace test { ref struct AAA; public ref class Form2 : public System::Windows::Forms::Form { public: Form2( AAA^ data ); (省略) ---------------------------------- Form2.cpp ---------------------------------- #include "Form2.h" namespace test { ref struct AAA ←←←この宣言を削除すると、AAAがないとエラーになる。 { int a; int b; int c; }; Form2::Form2( AAA^ data ) { label1->Text = data->a; } } ---------------------------------- [ メッセージ編集済み 編集者: おしろ 編集日時 2007-11-07 01:30 ] |
|
投稿日時: 2007-11-07 09:18
Form2.cpp には、 Form1.h も include しないといけないんじゃないでしょうか。
|
|
投稿日時: 2007-11-07 09:49
やっとコンパイルが通りました!
ご指摘の通り、Form1.h もインクルードしたら、 コンパイルが通りました。 長い間、ありとうございました。 また質問することがあるかと思いますが、 その時は、宜しくお願い致します。 ---------------------------------- Form1.h ---------------------------------- #include "Form2.h" namespace test { // 構造体 public ref struct AAA { int a; int b; int c; }; public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { AAA^ data = gcnew AAA(); data->a = 1; data->b = 2; data->c = 3; Form2^ fm2 = gcnew Form2( data ); fm2->ShowDialog(); (省略) ---------------------------------- Form2.h ---------------------------------- namespace test { ref struct AAA; public ref class Form2 : public System::Windows::Forms::Form { public: Form2( AAA^ data ); (省略) ---------------------------------- Form2.cpp ---------------------------------- #include "Form2.h" #include "Form1.h" namespace test { Form2::Form2( AAA^ data ) { label1->Text = data->a; } } |