2017-02-03 1 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::Insert에서 entry의 유형 인) 암시 적 (Set::Contains이 소요되는 인수의 유형 인)는 value_type&으로 캐스팅 할 수 없습니다. Set::Contains이 인수를 변경시키지 않으므로 const value_type&을 사용할 수있게해야합니다.

+0

와우, 내가 어떻게 그리워하는지 모르겠다. 정말 고맙습니다. –

관련 문제