где я могу объявить класс obj - PullRequest
0 голосов
/ 31 июля 2010

у меня есть приложение Windows Form 2 текстовое поле1,2 2 кнопки1,2 у меня есть человек класса {есть получить, установить (строка, INT)} и я хочу объявить человек р; чтобы увидеть это на двух кнопках1,2

моя проблема в том, что я заявляю человек р; внутренние кнопки, когда кнопки заканчиваются p. ~ person (); называется так что я не могу сохранить значение

и когда я вызываю p.get, я получаю начальное значение

код

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
         {person p;
      //string str;
  stringstr(constchar*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text).ToPointer();
             p.set( str,int ::Parse(textBox2->Text));


private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)
         {person p;
          string str;
         int ag;
         p.get(str,ag);

я объявляю класс

 class person
{
public:
    person();// create initial value
    ~person();//descon
    void set(string z,int a);//set value
    void get(string &z,int &a);//get value
private:

    string name;
    int age ;

};

------------------------------------------------------------
person cpp
#include "StdAfx.h"
#include "person.h"
#include "stdafx.h"

using namespace std;
using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

person::person()
{name="null";
 age=-1;

}
person::~person()
{
}

void person::set(string z, int a)
{name=z;
age= a;
}
void person::get(string &z, int &a)
{z =name;
a=age;
}

Могу ли я загрузить все решения или нет?

1 Ответ

0 голосов
/ 31 июля 2010

То, что вы хотите сделать, это сделать pa членом самого объекта формы.Таким образом, он будет доступен для всех обработчиков событий.

Просто возьмите person p; из вашего обработчика событий и поместите его в форму.В C # вы бы просто поместили его выше первого обработчика событий - я не уверен, что это то, что вы делаете в C ++ / CLI, но оно того стоит.

person p;

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    ...
    // Use p here
    p.set( str,int ::Parse(textBox2->Text));
}


private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)
{
    ...
    // It's still the same p here
    p.get(str,ag);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...