2012-03-19 12 views
2

私はVisual StudioでC++でWindows上で作業しています。関数でenumパラメータを使用する

私が持っているクラスがあります、のようなもの、私はステータスを変更するセッターとゲッターを使用する宣言で

enum algorithmStatus { LOADING, DETECTION, TRACKING, LOST }; 

を:

void MyStatusClass::setAlgorithmStatus(algorithmStatus newStatus) 
{ 
    //_Status = newStatus; 
    //_Status = MyStatusClass::algorithmStatus::LOADING; 
} 

をしかし、私はできません私は次のようにコンパイルします。

エラー5エラーC2511: 'void MyStatusClass :: setAlgorithmStatus(MyStatusClass :: algorithmStatus)':オーバーロードされたメンバーfuncti 'Nft_Status'に見つかりませんでした。c:\ MyStatusClass.cpp 197

どうすれば正しく設定できますか?

EDIT:ヘッダで

が既にdeclaratedれる:

void setAlgorithmStatus(MyStatusClass::algorithmStatus newStatus); 

と:

機能は、私が上に書き込むだけで宣言されているCPPで
void setAlgorithmStatus(algorithmStatus newStatus); 

に問題を解決し、私はコンストラクタでMyStatusClass :: algorithmStatusを使用して、あなたはMyStatusClass ::を使用する必要が無関心、とあなたはドント場合はそのことをお勧めドントは、それを使用しますそれが必要。

+1

クラスの定義を投稿します。 –

+0

クラス宣言に何か問題があります。クラス内で 'setAlgorithmStatus'を宣言していない可能性があります。あるいは、あなたは間違った方法でその関数を宣言しました。関数の宣言は次のようになります - 'void setAlgorithmStatus(MyStatusClass :: algorithmStatus my_variable);' –

+0

関数のシグネチャは宣言と定義で異なっているかもしれません。 –

答えて

4

error code C2511のためのMSDNドキュメントが目を光らせにあなたに良いリストを与える:指定されたパラメータで宣言されclass

機能のないバージョンでは見られないオーバーロードされたメンバ関数:

identifier 。考えられる原因:

  1. 誤ったパラメータが関数に渡されました。
  2. パラメータが間違った順序で渡されました。
  3. パラメータ名のスペルが間違っています。

常に、コンパイルエラーを解決する助けを得るためにエラーコードを検索。

+0

私はすでにこれをチェックしました。ビジュアルスタジオは列挙型を検出します。正しい名前でOKです。 – vgonisanz

+0

@Piperoman:クラス 'MyStatusClass'で関数を正しく宣言しましたか? –

+0

私はその大丈夫だと思う、私はヘッダーのようにそれを行う:void setAlgorithmStatus(MyStatusClass :: algorithmStatus newStatus); – vgonisanz

関連する問題