Ich habe einige Probleme beim Definieren einiger Operatorüberladungen für Vorlagenklassen. Nehmen wir diese hypothetische Klasse zum Beispiel.Operator überladen auf Klassenvorlagen
template <class T>
class MyClass {
// ...
};
Operator + =
// In MyClass.h MyClass<T>& operator+=(const MyClass<T>& classObj); // In MyClass.cpp template <class T> MyClass<T>& MyClass<T>::operator+=(const MyClass<T>& classObj) { // ... return *this; }
Ergebnisse in dieser Compiler-Fehler:
no match for 'operator+=' in 'classObj2 += classObj1'
Betreiber < <
// In MyClass.h friend std::ostream& operator<<(std::ostream& out, const MyClass<T>& classObj); // In MyClass.cpp template <class T> std::ostream& operator<<(std::ostream& out, const MyClass<T>& classObj) { // ... return out; }
Ergebnisse in dieser Compiler-Warnung:
friend declaration 'std::ostream& operator<<(std::ostream&, const MyClass<T>&)' declares a non-template function
Was mache ich hier falsch?
können Sie einige echte Code posten, die kompilieren fehlschlägt? – Naveen
@Naveen: Sie können eine gezippte Version unter http://www.box.net/shared/v23rj2f8e7 – Pieter