2017-02-03 2 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& (который является тип entry в Set::Insert) не может быть неявно приведен к value_type& (который является типом аргумента, который принимает Set::Contains). Поскольку Set::Contains не мутирует его аргумент, вы также можете сделать его также const value_type&.

+0

Ничего себе, я не знаю, как я это пропустил. Огромное спасибо. –

Смежные вопросы