2011-06-21 28 views
2

我遇到了一個Windows應用程序窗體的組織問題,我需要一些幫助。現在代碼在C++的.net 4.0中的microsoft studio 2010中完成。 GUI應用程序的頭文件沒有組織,這可能會導致10,000行或更多行代碼,這使得閱讀起來非常困難。將點擊事件從.h(設計器代碼)分離到.cpp文件

我試圖將單擊事件實現分隔到包含「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 \ GUIte ST \ GUItest \ Form1.cpp 16

錯誤4錯誤C2355:'this':僅能在非靜態成員函數E被引用:\ 2011年夏季\工程師軟件\ GUItest \ GUItest \ Form1.cpp 21

錯誤3錯誤C2227:左'->USCustomaryFlg'必須指向類/結構/聯合/通用型E:\ 2011年夏季\工程師SOFTWARE \ GUItest \ GUItest \ Form1.cpp 16

錯誤8錯誤C2227:的'->USCustomaryFlg'左側必須指向to class/struct/union/generic type E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 22

對此有何看法?

+0

這不是C++。我已經相應地重新簽署了。 –

回答

4

如果你的C++方法是定義(即有它的身體書面)分別從聲明(即它的招牌類裏面),你需要前綴的方法定義與類名。

E.g.如果您的課程名爲MyForm,則其定義應爲

System::Void MyForm::mnuUSMetric_Click(System::Object^ sender, System::EventArgs^ e){ 
    ... 
} 
+0

是的,並將該方法的聲明留在.h文件中。 –

+1

它從來沒有與它的*定義*分開定義,因爲它的定義*是根據定義定義的。我認爲你的意思是*聲明*。 –

+0

@Ben Voigt,感謝您的糾正,這就是我的意思。傻我... –