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? |