我遇到了Windows应用程序表单的组织问题,我需要一些帮助。现在,代码在c ++的.net 4.0中的microsoft studio 2010中完成。 GUI应用程序的头文件没有被组织,这可能导致10,000行或更多行代码,这使得它很难阅读。
我试图将click事件实现分成包含“Form1.h”的.cpp文件。
private:
System::Void sIToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e){
switch(this->USCustomaryFlg){
case true:
this->sIToolStripMenuItem->Checked = true;
this->mnuUSMetric->Checked = false;
this->USCustomaryFlg = false;
cout << "SI flag is now true." << endl;
break;
case false:
break;
}
}
在Form1的.cpp文件中的这个表单:
System::Void mnuUSMetric_Click(System::Object^ sender, System::EventArgs^ e){
switch(this->USCustomaryFlg){
case true:
cout << "USCustomaryFlg is now false." << endl;
break;
case false:
this->mnuUSMetric->Checked = true;
this->USCustomaryFlg = true;
this->sIToolStripMenuItem->Checked = false;
cout << "USCustomaryFlg is now true." << endl;
break;
}
}
我收到的错误只是我得到的一个例子:
错误2错误C2355:
'this'
:只能在非静态成员函数中引用E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 16错误4错误C2355:
'this'
:只能在非静态成员函数中引用E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 21错误3错误C2227:
'->USCustomaryFlg'
的左侧必须指向类/ struct / union / generic类型E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 16错误8错误C2227:
'->USCustomaryFlg'
的左侧必须指向类/ struct / union / generic类型E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 22
对此有何想法?
答案 0 :(得分:4)
如果您的C ++方法已定义(即将其正文编写)与其声明(即它在类中的签名)分开,则需要为方法定义添加前缀班级名称。
E.g。如果您的类名为MyForm
,则定义应为
System::Void MyForm::mnuUSMetric_Click(System::Object^ sender, System::EventArgs^ e){
...
}