Ambigious call to overloaded function



  • Lol, alles klar ^^

    Der Schlussteil ist nur dazu da, dass das Fenster nicht geschlossen wird, nachdem der Code ausgeführt wurde. Je nach IDE und Compiler muss man das anfügen, sonst sieht man die Ergebnisse gar nie.

    Kann mir jemand sagen, wie ich mein Problem lösen kann?



  • Lass das using namespace std; weg. Das Problem ist, dass es im Namensraum std bereits eine Funktion swap gibt. Der Compiler kann jetzt aber nicht entscheiden ob dein Template verwendet werden soll oder das aus std.

    Schreib stattdessen entweder explizit std::cout und std::cin oder verwende using std::cout; und using std::cin;



  • Achso, jetzt ist mir klar, warum die Function im Buch Swap und nicht swap heisst. Ich habe die Methode jetzt kurzerhand umbenannt.

    Vielen Danke für deine Hilfe 🙂



  • icarus2 schrieb:

    Lol, alles klar ^^

    Der Schlussteil ist nur dazu da, dass das Fenster nicht geschlossen wird, nachdem der Code ausgeführt wurde. Je nach IDE und Compiler muss man das anfügen, sonst sieht man die Ergebnisse gar nie.

    Kann mir jemand sagen, wie ich mein Problem lösen kann?

    da gibts ne bessere Methode im faq

    mit cin.get()
    cin.clear()
    etc.

    Das man das dann nicht sieht ist mir schon klar 🙂 hab nicht umsonst auch mal Console gemacht.



  • im Übrigen gibt der Compiler normalerweise mehr als nur die Fehlermeldung an, in dem Fall normalerweise die beiden Kandidaten zwischen denen er sich nicht entscheiden kann.



  • Ja, es gab mehr Fehlermeldungen... viele Zeilen sogar ^^

    Aber ich dachte, dass die beiden Zeilen wohl die wichtigsten sind. Da habe ich mal nur die gepostet.



  • Gibt es in C++ nicht schon per default diese swap Funktion? Versuch mal den Namen ein wenig umzuaendern.



  • Jap, die Funktion wird klein geschrieben, swap(..)
    Genau das war das Problem, dass ich zuerst die Funktion swap() geschrieben habe, als Swap() wie es in der Übung geschrieben wurde. Deswegen gabs dann auch Probleme.

    Das war nur ein Beispiel im Buch, um das Prinzip der Templates zu zeigen.



  • Alternativ könntest du auch sparsamer mit using namespace umgehen. 😉



  • Jup, das wäre auch ne Lösung, danke für den Hinweis.


Anmelden zum Antworten