C++Builder问题 - C++ Builder / Windows SDK/API
本人初接触C++Builder
現问题描述如下:
运行时出现:
Project Project1.exe raised exception class EStackOverflow with message 'Stack overflow'.Process stopped.Use Step or Run to continue.
我定义了一个Form类的私有变量a,自动产生geta和seta(int)两函数有如下代码:
//下面代码自动产生private: void __fastcall Seta(int value); int __fastcall Geta(); __property int a = { read=Geta, write=Seta }; // User declarations//下面代码自己写的简单的测试一下的程序void __fastcall TForm1::Button1Click(TObject *Sender){ this->Seta(50); ShowMessage(IntToStr(this->Geta()));}//---------------------------------------void __fastcall TForm1::Seta(int value){ this->a = value; //TODO: Add your source code here}int __fastcall TForm1::Geta(){ return this->a; //TODO: Add your source code here}private: int m_a; void __fastcall Seta(int value); int __fastcall Geta(); __property int a = { read=Geta, write=Seta }; // User declarations//下面代码自己写的简单的测试一下的程序void __fastcall TForm1::Button1Click(TObject *Sender){ this->Seta(50); ShowMessage(IntToStr(this->Geta()));}//---------------------------------------void __fastcall TForm1::Seta(int value){ m_a = value;}int __fastcall TForm1::Geta(){ return m_a;}
[解决办法]
>>>那a和m_a有什么区别呢?
a是属性,m_a是一个整形变量,用来存储属性a中的值。
>>>new Field和new Property
前者通常是定义一个变量,后者是定义一个属性。