2017-02-14 6 views
0

Может кто-нибудь объяснить мне, что я делаю неправильно здесь?Создание объекта в visual studio 2010 C++

У меня есть два класса, и я должен получить доступ к значению переменного класса А в классе B, а затем сравнить их, и это то, что я делаю, и я не могу получить доступ к переменному

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); 
    } 
}` 

Это дает я ошибся, говоря синтаксическую ошибку в строке A^ obj;, когда у меня ее есть, и говорящий отсутствующий спецификатор типа, оба эти класса находятся в разных заголовочных файлах

+1

Это не C++, похоже, что это может быть C#. Язык C++ не имеет синтаксиса: 'public ref class'. Кроме того, перед «публичным» перед методом должен быть двоеточие, «:», после него. '' 'После' String' указывает, что вы используете CLI. Я рекомендую менять языковые теги. –

+0

Это определенно не C#, или, по крайней мере, не какой-то C#, который я видел ..... – Tim

ответ

0

В попытке быть полезными, и я, вероятно, получу несколько голосов ... ненавистников будь красивой.

Это C++/CLI, поэтому просить только о C++ не поможет вам, поскольку это очень специальный тип C++, который я не буду пытаться объяснить. Гордон Хогенсон написал отличную книгу по этому вопросу.

класса А имеет класс 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, а не гибрид, который, по вашему мнению, является проблемой.

Что касается установки A в B, это переменный вопрос сферы ОО и не зависит обсуждение компиляции

+0

оцените его. Я получаю несколько downvotes, и они даже не объясняют, почему они это сделали. Я только начал работать над визуальной студией, так что все это совершенно откровенно ново для меня. Я думал, что могу задавать вопросы здесь и учиться на опыте других, но я думаю, что дело не в этом. Я скоро обновлю свой вопрос. –

Смежные вопросы