Fehler: Mehrere Instanzen von "Überladener Funktion"
-
Hallo, ich bin relativ neu bei der C++ Programmierung und will mir gerade das Thema Templates aneignen. Mit dem generierten Fehlercode kann ich nach Recherche immer noch nicht viel anfangen - obwohl es mit Sicherheit ganz einfach ist. Danke für jede Antwort.
der Code:
#include "pch.h" #include <iostream> using namespace std; template<typename X> void swap (X& a, X& b) { X temp = a; // temp mit a initialisiert a = b; b = temp; } int main() { int a = 33, b = 44; cout << "vorher: " << a << ", " << b << endl; swap (a, b); cout << "nachher: " << a << ", " << b << endl; system("Pause"); }
Fehler:
- Fehler (aktiv) E0308 Mehrere Instanzen von "Überladene Funktion "swap"" stimmen mit der Argumentliste überein: (Zeile 18) - swap wird also rot unterstrichen
- Fehler C2668 "std::swap": Mehrdeutiger Aufruf einer überladenen Funktion Funktions- Templates swap
-
Lass das
using namespace std;
einfach weg.
-
Danke für die schnelle Antwort - ja hat tatsächlich funktioniert - dafür muss ich dann eben einzeln bei cout und endl davor "std::" schreiben......aber so geht es dann wenigstens....Danke
#include "pch.h" #include <iostream> template<typename X> void swap (X& a, X& b) { X temp = a; // temp mit a initialisiert a = b; b = temp; } int main() { int a = 33, b = 44; std::cout << "vorher: " << a << ", " << b << std::endl; swap (a, b); std::cout << "nachher: " << a << ", " << b << std::endl; system("Pause"); }
-
dafür muss ich dann eben einzeln bei cout und endl davor "std::" schreiben
Ja und ist doch nicht schlimm Und wenn's dich so sehr stört, dann lieber:
using std::cout; using std::cin; // ...
std::endl brauchst Du sowieso nicht. Nimm einfach
'\n'
.
-
-
der grund für die fehlermeldung ist übrigens, dass es im std bereits eine funktion namens swap gibt. die antwort auf die frage "wie beseitigen sie die fehlermeldung?" lautet also "ich lösche 'meine' swap-funktion und verwende die standard-swap.".
-
Dieser Beitrag wurde gelöscht!
-
@titan99_ Man machts einfach nicht. Vernünftige IDEs haben Optionen die Shell offenzuhalten nachdem das Programm beendet ist. Wenn nicht gibt es elogantere Methoden das zu erreichen. Oder man macht es so, wie es gedacht ist: Programme ohne GUI aus der Shell starten.
-
@titan99_ sagte in Fehler: Mehrere Instanzen von "Überladener Funktion":
@Swordfish sagte in Fehler: Mehrere Instanzen von "Überladener Funktion":
@Bauer sagte in Fehler: Mehrere Instanzen von "Überladener Funktion":
system("Pause");
*lach*
Was ist daran so lustig?
Edit: Ich fand why not use system pause in C++ Nachteile, aber dass die hier relevant sind bezweifle ich.
system( "pause" ) zu verwenden ist ungefähr so, als würdest du, anstatt einfach das Garagentor zu schließen, die Bundeswehr anrufen, und sie zu bitten einen Leopard2A7+ vor deiner Garage zu parken. Kann man machen. Muss man aber nicht.