首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

重载输出操作符有关问题

2012-04-17 
重载输出操作符问题#include iostreamusing namespace stdclass A{public:int a,b public:A():a(0),b(

重载输出操作符问题
#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,当时还以为是编译器的设置问题.............
楼主可以参照上面的链接看看
[解决办法]

探讨
VC6在同时出现friend和std的时候 会发傻,这是知名bug

热点排行