2017-02-03 4 views
0

Ich bin sicher, mein Problem ist etwas albern, ich habe überhaupt nicht viel Erfahrung mit C++.Probleme beim Aufruf einer Mitgliedsfunktion

Ich versuche, eine Funktion aufzurufen, die wahr zurückgibt, wenn ein eingegebener Wert bereits in einem Satz ist. Wenn ich diese Funktion in einer anderen Funktion anrufe, bekomme ich einen Fehler und ich weiß nicht warum.

Hier ist, wo ich die Funktion aufrufen:

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

und hier ist die Funktion, die ich anrufen bin:

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; 

} 

Es gibt sicherlich einen besseren Weg, dies zu tun, aber jetzt bin ich mehr konzentrierte sich darauf, warum es nicht funktioniert.

Der Fehler, den ich bekomme, ist 'keine passende Funktion für den Aufruf von Set :: Contains() , aber ich verstehe nicht warum. Ich habe den Funktionsprototyp.

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

'! Enthält()' übergibt keinen Parameter an die Funktion. Du meinst wahrscheinlich '' Enthält (Eintrag) ' –

+0

Ich habe das vor dem Posten versucht, es hat auch nicht funktioniert. –

Antwort

1

const value_type& (die die Art der in entrySet::Insert ist) kann nicht implizit in einen value_type& gegossen werden (was der Typ des Arguments ist, dass Set::Contains dauert). Da Set::Contains sein Argument nicht mutieren, sollten Sie in der Lage sein, es auch eine const value_type& machen zu lassen.

+0

Wow, ich weiß nicht, wie ich das vermisst habe. Ich danke dir sehr. –

Verwandte Themen