重载输出操作符问题
#include <iostream>
using namespace std;
class A
{
public:
int a,b ;
public:
A():a(0),b(0){}
friend ostream& operator<<(ostream &out,const A&s);
};
ostream& operator<<(ostream& out,const A& s)
{
out<< s.a<<s.b;
return out;
}
int main()
{
A m;
cout<<m;
return 0;
}
上面这个代码为什么会报错 'operator <<' is ambiguous
而把重载操作符的代码放到类里面则是正确的 用的是vc++6.0
#include <iostream>
using namespace std;
class A
{
public:
int a,b ;
public:
A():a(0),b(0){}
friend ostream& operator<<(ostream &out,const A&s){
out<< s.a<<s.b;
return out;
}
};
int main()
{
A m;
cout<<m<<endl;
return 0;
}
这是何解呢?
这是我弄的一个调试代码,在我另外一个类里面 将重载操作符代码到类外实现时 更滑稽的报出了不能访问私有成员的错误,明明设置了friend!用Visual Stuio 2010也报出同样的错!求高人指点!
[解决办法]
VC6在同时出现friend和std的时候 会发傻,这是知名bug
[解决办法]
http://tieba.baidu.com/f?kz=381742836
学习了,曾经也碰到过这个问题,原来是个bug,当时还以为是编译器的设置问题.............
楼主可以参照上面的链接看看
[解决办法]