下面是一段代码,重载< <操作:运算符<<重载,命名空间和模板
#include <iostream>
using namespace std;
namespace MyNamespace
{
template <typename T>
class MyClass
{
const int a = 5;
template <typename U>
friend std::ostream& operator<<(std::ostream &os, const MyClass<U>& obj);
};
}
template <typename U>
std::ostream& operator<<(std::ostream &os, const MyNamespace::MyClass<U>& obj)
{
return cout << obj.a;
}
int main()
{
MyNamespace::MyClass<int> foo;
cout << foo;
// your code goes here
return 0;
}
当我编译,我得到一个“暧昧的重载‘操作< <’。
我不明白为什么...
因为有一个'MyNamespace :: operator <<'和一个'operator <<' – tkausl