我有一些問題,爲模板類定義一些運算符重載。舉個例子,我們假設這個假設的類。運營商在類模板上重載
template <class T>
class MyClass {
// ...
};
操作者+ =
// 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; }
結果此編譯器錯誤:
no match for 'operator+=' in 'classObj2 += classObj1'
操作者< <
個// 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; }
結果在這個編譯器警告:
friend declaration 'std::ostream& operator<<(std::ostream&, const MyClass<T>&)' declares a non-template function
我在做什麼錯在這裏?
你可以發佈它無法編譯一些實際的代碼? – Naveen 2010-10-25 12:08:33
@Naveen:您可以在http://www.box.net/shared/v23rj2f8e7獲得壓縮版本 – Pieter 2010-10-25 12:12:11