看看这个小小的错误在哪里

温暖阳光236 2010-01-21 04:20:09
#include <iostream>
using namespace std;

class Complex
{
private:
double rpart, ipart;
public:
Complex(double r = 0.0, double i = 0.0)
{
rpart = r;
ipart = i;
}
friend ostream& operator << (ostream&, Complex&);
};

ostream& operator << (ostream& os, Complex& c)
{
os << "(" << c.rpart << "," << c.ipart << ")" << endl;
return os;
}

int main()
{
Complex a(5, 4), b(1.1, 2.2);
cout << a << b;
return 0;
}
以上错在哪里?初学
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-01-21
  • 打赏
  • 举报
回复
如果是vc6.0的话,友元函数必须前置声明。
lovesi3344 2010-01-21
  • 打赏
  • 举报
回复
坐等大牛解决
我记得我们老师当时说过用vc6的时候在类之前要加两行友元声明和类什么来着
现在已经模糊了 当然 如果不是用VC6编译就没有这种问题
andson1111 2010-01-21
  • 打赏
  • 举报
回复
没错,vc6也没错啊、莫非我们水平太低。汗!
太乙 2010-01-21
  • 打赏
  • 举报
回复


#include <iostream>
using namespace std;

class Complex
{
private:
double rpart, ipart;
public:
Complex(double r = 0.0, double i = 0.0)
{
rpart = r;
ipart = i;
}
friend ostream& operator < < (ostream&, Complex&)
{
os < < "(" < < c.rpart < < "," < < c.ipart < < ")" < < endl;
return os;
}
};




int main()
{
Complex a(5, 4), b(1.1, 2.2);
cout < < a < < b;
return 0;
}



wuyu637 2010-01-21
  • 打赏
  • 举报
回复
运行没有错。。
vc2005
tan870426 2010-01-21
  • 打赏
  • 举报
回复
VS2008没错啊....报什么错?
ArmStronger 2010-01-21
  • 打赏
  • 举报
回复
没错,如果你用vc6的话,有缘函数必须在类里定义,这是vc6的bug

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧