Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Überladen/Spezialisieren von Template-Funktionen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.06.2010, 14:05 Uhr
Hellcat



Moin Leute!

Ich habe in einer Template-Klasse die Funktionen

C++:
BOOL Equals (T a, T b)
BOOL Equals (std::string a, std::string b)


Beim Kompilieren tritt die folgende Fehlermeldung auf:

error C2535: 'BOOL MyClass<T>::Equals(T,T)' : member function already defined or declared

Warum der Fehler auftritt kann ich zumindest nachvollziehen (T kann ja auch vom Typ std::string sein), aber wie muss ich die Funktion überladen, damit bei Variablen vom Typ std::string die zweite Funktion aufgerufen wird?

Ich hab's auch mit einer Spezialisierung versucht:

C++:
template <typename T> BOOL Equals (T a, T b)
template <class T> BOOL Equals (std::string a, std::string b)



Dann bekomme ich allerdings die folgende Fehlermeldung:

error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)

Die Klassen, die den "=="-Operator nicht entsprechend implementiert haben anzupassen kommt leider nicht in Frage, daher brauche ich eine andere Lösung. Kann mir da jemand helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.06.2010, 18:30 Uhr
Tommix



Hallo,
der Fehler scheint mir im Inneren der Funktion(en) zu liegen, poste das mal.
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: