VC6中重载cout的操作符<<,这样都能错误!为什么iostream就错iostream.h就不好?

bearforcat 2002-08-22 09:06:47
#include <iostream>
using namespace std;

class CIOSTest
{
private:
friend void operator << (ostream &, CIOSTest &);
int data;
};

void operator << (ostream &os, CIOSTest &test)
{
cout<< test.data;
}

void main()
{
CIOSTest test1;
cout << test1;
}

Compiling...
复件 a1.cpp
C:\Windows\Desktop\复件 a1.cpp(13) : error C2248: 'data' : cannot access private member declared in class 'CIOSTest'
C:\Windows\Desktop\复件 a1.cpp(8) : see declaration of 'data'
C:\Windows\Desktop\复件 a1.cpp(19) : error C2593: 'operator <<' is ambiguous
Error executing cl.exe.

复件 a1.exe - 2 error(s), 0 warning(s)
...全文
74 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bearforcat 2002-08-22
  • 打赏
  • 举报
回复
奇怪!!!在vc.net中居然开始那程序完全正常!!
bearforcat 2002-08-22
  • 打赏
  • 举报
回复
return os << test.data;在VC6一样错,但至少方法比我那cout好多了
「已注销」 2002-08-22
  • 打赏
  • 举报
回复
你的程序因为用了using namespace std(std是标准模板,为避免在一个程序因调用同名函数而发生调用错误,所以用std是一种好习惯);
所以在头文件后不能加后缀名
如果你加了.h,就不需要using namespace std;
ciml 2002-08-22
  • 打赏
  • 举报
回复
同意 wistaria(听风听雨
hnzzz 2002-08-22
  • 打赏
  • 举报
回复
GZ
wistaria 2002-08-22
  • 打赏
  • 举报
回复
class CIOSTest
{
private:
friend ostream& operator << (ostream &, CIOSTest &);
int data;
};

ostream& operator << (ostream &os, CIOSTest &test)
{
return os << test.data;
}
wetrust 2002-08-22
  • 打赏
  • 举报
回复
你的程序彻底错了。
bearforcat 2002-08-22
  • 打赏
  • 举报
回复
你们试过我那代码在VC6没错误吗?!!!我试过就有错,但完全不修改代码在bcb6,vc7下就正确。
拜托csdn的大哥们,问题看清楚,自己试了行再回答好不好
Lemon_2000 2002-08-22
  • 打赏
  • 举报
回复
同意 wistaria(听风听雨)
bearforcat 2002-08-22
  • 打赏
  • 举报
回复
可是在VC6中就编译错误!

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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