Console下友员问题

skymost 2003-05-05 11:28:34
假设定义有这样一个类Nova , 在VC Console下为什么总是提示<<访问了私有成员?
我已经将其定义为友员了呀 !在 GNU ++ 下测试通过 。 此外 , 如果用 print函数却也能够正确运行 ?
class Nova {
friend ostream & operator << (ostream & os, Nova & no);
friend void print(Nova & no);
public:
Nova(int v1,int v2,string s):name(s){i=v1;j=v2;}
private:
int i,j;
string name;
};

ostream & operator << (ostream & os, Nova & no) {
os<<no.name<<' : '<<no.i<<'\t'<<no.j<<endl;
return os;
}

void print(Nova & no) {
cout<<no.name<<endl<<no.i<<endl<<no.j<<endl;
}

void main() {
Nova nova(1,2,"fengxin");
cout<<nova;
//print(nova);
}
...全文
48 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rtdb 2003-05-05
  • 打赏
  • 举报
回复
以上程序VC6编译运行均正常。
不过输出有点问题。
os<<no.name<<' : '<<no.i<<'\t'<<no.j<<endl;
应改为
os<<no.name<<" : "<<no.i<<"\t"<<no.j<<endl;
skymost 2003-05-05
  • 打赏
  • 举报
回复
谢谢了 !接分 :)
lifanxi 2003-05-05
  • 打赏
  • 举报
回复
VC6的BUG,解决方案是打上SP5补丁。
或者不要用标准头文件#include <iostream>,用老的#include <iostream.h>即可。
也可换用其它的编译器。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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