Erkennt Funktion aus anderer Klasse nicht



  • Hallo zusammen,

    ich habe in einer Datei mehrere Klassen, von denen eine Klasse in einer ihrer Funktionen, die Funktion einer anderen Klasse derselben Datei benutzt.
    Wenn man die Datei nun kompiliert, erhält man folgende Fehlerausgabe:

    error: no matching function for call to 'Klassenname wo die Funktion steht'::'Funktionsname'
    

    Dann steht dort eine Art Hinweis, welche Funktion es sein könnte:

    note: candidates are: 'Klassenname wo die Funktion steht'::'Funktionsname'
    

    was auch tatsächlich die Funktion ist, nur wieso gibt er dann den Fehler aus?

    Danke euch,

    Nico



  • Kannst du ein minimales Codebeispiel posten, bei dem der Fehler auftritt? Die Argumente stimmen wohl nicht ganz exakt mit der Signatur der Funktion überein.



  • Nico Br. schrieb:

    was auch tatsächlich die Funktion ist, nur wieso gibt er dann den Fehler aus?

    Weil die Parameter nicht passen, und zwar vom Typ her (Anzahl muss passen, sonst würde er gleich gar keinen Kandidaten finden).



  • Wild geraten: Versuchst du, eine non-const-Methode über ein const-qualifiziertes Objekt aufzurufen? Etwa

    struct A {
      void foo() { }
    };
    
    int main() {
      A const a; 
      a.foo(); // Fehler!
    }
    

    ?

    Richtig wäre in dem Fall

    struct A {
      void foo() const { } 
    };
    

    , sofern die Methode das Objekt nicht verändert, und wenn sie das Objekt verändert, kannst du sie nicht mit einer Konstanten aufrufen.

    Wenn die angebotenen Signaturen einer vorhandenen Methode sehr ähneln, ist das ein beliebter Fehler.



  • Kann es sein, dass die Zielfunktion nicht public ist und die Klasse in welcher die Zielfunktion als Member anzutreffen ist keine friend s hat?


Log in to reply