【发布时间】:2013-05-02 13:31:59
【问题描述】:
有谁知道如何让这两个重载的操作符共存?
#include<iostream>
template< typename T >
class A;
template< typename T >
std::ostream& operator<<( std::ostream& o, const A<T>& e );
template< typename T >
class A
{
A& operator <<( const A& e );
friend std::ostream& operator<< <>( std::ostream& o, const A<T>& e );
};
int main()
{
// program
return 0;
}
// def A<T>::A& A::operator <<( const A& e );
// def std::ostream& operator<< <>( std::ostream& o, const A<T>& e );
错误:
$ g++ prov.cpp -o prov
prov.cpp:13:33: error: declaration of ‘operator<<’ as non-function
prov.cpp:13:33: error: expected ‘;’ at end of member declaration
prov.cpp:13:36: error: expected unqualified-id before ‘<’ token
对不起,我的英语不好。因此我很少写。
问候和感谢!
【问题讨论】:
-
您遇到错误了吗?
-
g++ 版本 4.7.3 编译器抛出此错误:prov.cpp:13:33:错误:将 'operator 之前预期的 unqualified-id
-
我也遇到了同样的问题,发现加上
using namespace std;然后编译器就不会报错了。但我还是没找到原因。