2011-06-21 10 views
2

私はいくつかの助けが必要なWindowsアプリケーションフォームの組織の問題にぶつかってきました。今のコードは、.NET 4.0のC++でmicrosoft studio 2010で行われています。 GUIアプリケーションのヘッダーファイルが整理されていないため、10,000行以上のコード行につながる可能性があり、読み込みが非常に困難です。クリックイベントを.h(デザイナーコード)から.cppファイルに区切ります

私は、 "Form1.h"を含む.cppファイルにクリックイベントの実装を分離しようとしていました。 Form1の.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; 
     } 
    } 

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:\エンジニアソフトウェア\ GUItest \ GUItest \ Form1.cpp \ 2011年夏16

エラー8エラーC2227:'->USCustomaryFlg'の左側には、クラス/構造体/共用/ジェネリック型Eを指している必要があり'->USCustomaryFlg'の左側が指している必要がありますクラス/構造体/共用体/ジェネリック型E:¥Summer 2011¥Engineer Software¥GUItest¥GUItest¥Form1.cpp 22

これについてのご意見はありますか?

+0

です。これはC++ではありません。私はそれに応じてそれを記録した。 –

答えて

4

あなたのC++メソッドはその宣言別に(すなわち、その本体が書かれている)を定義しされた場合(すなわち、それはクラスの内部で署名だ)、あなたはクラス名とメソッド定義の前に付ける必要があります。

など。クラス名がMyFormの場合、定義は

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

はい。メソッドの宣言を.hファイルに残します。 –

+1

*定義*は、それが定義された場所であるため、*定義*とは別に定義されません。私は*宣言*を意味すると思う。 –

+0

@Ben Voigt、訂正してくれてありがとう、それは私が言ったことです。愚かな私... –