2017-02-03 11 views
0

私の問題は何かばかげていると確信していますが、C++の経験はあまりありません。メンバ関数を呼び出す際に問題がある

私は、入力された値が既にセットに含まれている場合にtrueを返す関数を呼び出そうとしています。この関数を別の関数で呼び出すと、エラーが発生し、その理由がわかりません。私は関数を呼び出すのはここ

は次のとおりです。

Set::Insert(const value_type& entry){ 
if(!Contains()){... 

、ここでは、私が呼び出しています関数です。

bool Set::Contains(value_type& entry) const{ 
int temp = 0; 

for(int i = 0; i < used; i++){ 
    if(data[i] == entry){ 
     return true; 
    }else{ 
     temp++; 
    } 
} 

if(temp == used) return false; 

} 

あり、これを行うには良い方法は確かですが、今のところ、私はより多くの午前なぜそれが仕事を失うことに焦点を当てた。

私が得ているエラーは、 'Set :: Contains()への呼び出しで一致する関数がありません。 ですが、その理由はわかりません。私は関数プロトタイプを持っています。

public: 
    typedef int value_type; 
    typedef std::size_t size_type; 
    static const size_type CAPACITY = 5; 
    Set(); 
    Insert(const value_type& entry); 
    Remove(); 
    bool Contains(value_type& entry) const; 
    Print(); 
    moveForward(); 
    moveBack(); 
    ~Set(); 
+1

'!Contains()'は、関数にパラメータを渡しません。あなたはたぶん '!Contains(entry)'を意味します。 –

+0

投稿する前に試してみましたが、うまくいきませんでした。 –

答えて

1

const value_type&は(Set::Insertentryの一種である)暗黙的に(Set::Containsがとる引数の型である)value_type&にキャストすることはできません。 Set::Containsは引数を変更していないので、とすることもできます。

+0

うわー、私はそれを逃したのか分かりません。どうもありがとうございます。 –

関連する問題