我的Windows應用程序的形式2 文本box1,2 2 button1,2 我有類人{已經獲取,設置(字符串,整數)} ,我想聲明 人員P ; 看到它在兩個按鈕1,2我在哪裏可以聲明類的obj
我的問題是我宣佈 人p;內部按鈕時按鈕結束 P〜人();被稱爲 所以我不能保存值
,當我打電話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;
}
我可以上傳所有解決方案嗎?
如果您將代碼縮進四個空格,它將自動格式化爲您。你可能會考慮重新編寫代碼,以便閱讀。 – 2010-07-31 00:28:51
請不要將代碼放在與前括號相同的行上。這使它很難閱讀。 – 2010-07-31 00:36:51
這段代碼很奇怪。 C++/CLI中的'string'不是.NET字符串。既然你已經使用過'使用命名空間標準;'你已經在託管代碼中獲得了一個本地字符串。如果你想重用現有的本地代碼,這很好,但我在這裏沒有看到任何跡象。爲什麼不讓'person'成爲'ref class'並使用'System :: String ^'而不是'std :: string'?它可以讓你擺脫醜陋的InteropServices函數調用。 – 2010-08-01 02:15:37