2017-02-14 5 views
0

ここで間違っていることを誰かに説明することはできますか?Visual Studio 2010でのオブジェクト作成C++

は、私は2つのクラスを持っていると私はクラスBにクラスAの変数の値にアクセスし、それらを比較する必要があり、これは私がやっているものですし、私はこれが与える変数

public ref class A : public System::Windows::Forms::Form 
{ 

    public: 
    String^ name; 
    String^ address; 

    private: System:: void foo() 
    { 
     name=textBox1->Text; 
     address=textBox2->Text; 
    } 
}` 

public ref class B : public System::Windows::Forms::Form 
{ 

    public: 
    String^ name1; 
    String^ address1; 
    A^ obj; 

    private: void foo() 
    { 
    MessageBox::show(obj->name); 
    MessageBox::show(obj->address); 
    } 
}` 

にアクセスすることができません私は1行目に欠落している型指定子があると、これらのクラスが異なるヘッダファイルにあると、A^ obj;という行の構文エラーをエラーしています。

+1

これはC++ではないの設定に関しては、それはC#の可能性のように見えます。 C++言語の構文は 'public ref class'ではありません。また、メソッドの前にある 'public'にはコロン': 'をつけてください。 'String'の後の'^'は、あなたがCLIを使用していることを示します。言語タグを変更することをお勧めします。 –

+0

それは間違いなくC#ではない、少なくとも見たC#の種類ではありません。 – Tim

答えて

0

これは、いいね。

これはC++/CLIなので、C++について質問すると、それは私が説明しようとしないC++の非常に特殊なタイプなので、助けにならないでしょう。ゴードン・ホーゲンソンは、このテーマについて優れた本を書いています。

クラスAがクラスB を持っている、あなたがfooの一部(として名とアドレスを設定します何も表示されません)あなたは、これはコンパイルエラーで示唆されている場合

を実行されている、これは私

用にコンパイル
 public ref class A : public System::Windows::Forms::Form 
     { 

      public: 
       String^ name; 
       String^ address; 

      private: void foo() 
      { 
       name = "Test this"; 
       address ="Test 2"; 
      } 
     }; 

     public ref class B : public System::Windows::Forms::Form 
     { 

       public: 
        String^ name1; 
        String^ address1; 
        A^ obj; 

        private: void foo() 
        { 
         MessageBox::Show(obj->name); 
         MessageBox::Show(obj->address); 
        } 
      }; 

私はそれがあなたが期待したことをするとは思えませんが、コンパイル時のエラーと戦っているなら、それは別の問題です。コンパイル時の問題に対処するには、実際の.hと.cppを提供し、問題と思われるハイブリッドではありません。

コンパイル時のBの中に、これはOOの変数のスコープの問題であり、独立して議論

+0

ありがとうございます。私はいくつかのダウンボントを取得していて、なぜ彼らはそれをしたのか説明しません。私はちょうどビジュアルスタジオで作業を始めましたので、これはすべて私にとって全く新しいものです。私はここで質問し、他人の経験から学ぶことができると思ったが、そうではないと思う。私はまもなく質問を更新する。 –

関連する問題