这两天一直被C++中重载输出运算符的问题困扰,查阅多方资料无果。今天在MSDN论坛翻了很久,终于找到解答,此文仅用于备忘,以便日后查阅。以下为测试小程序:
起初,在Complex.h文件中,使用:
#include<iostream>
using namespace std;
结果编译时出现错误,提示<<不能访问Complex的私有成员。
后改正为#include<iostream.h>,编译通过,且运行正常。
分析:
vc60下的<iostream> 不支持友元<<的重载方式。所以在6.0下若想以友元方式重载<<(输出运算符)的话,应该包含头文件<iostream.h>而非<iostream>。