C++重载输入输出运算符重载在VC6.0中通不过编译
2011-09-01 21:07
357 查看
#include <iostream>
using namespace std;
class CBase
{
private:
int m_a;
protected:
int m_pp;
public:
CBase(int a,int pp): m_a(a),m_pp(pp){}
friend ostream& operator<<(ostream &out, const CBase &b);
};
ostream& operator<<(ostream &out, const CBase &b)
{
out<<b.m_a<< " "<<b.m_pp<<endl;
return out;
}
编译时,却提示
error C2248: 'm_a: cannot access private member declared in class CBase
error C2248: 'm_pp: cannot access private member declared in class CBase
这就奇怪了,友元函数不是能访问类的私有成员变量吗?怎么就不行了。
后来得知,原来我用的是VC++6.0编译器,在vs2005上就没问题了。或者把头文件包含写成
#include <iostream.h>
//using namespace std
就可以了。
using namespace std;
class CBase
{
private:
int m_a;
protected:
int m_pp;
public:
CBase(int a,int pp): m_a(a),m_pp(pp){}
friend ostream& operator<<(ostream &out, const CBase &b);
};
ostream& operator<<(ostream &out, const CBase &b)
{
out<<b.m_a<< " "<<b.m_pp<<endl;
return out;
}
编译时,却提示
error C2248: 'm_a: cannot access private member declared in class CBase
error C2248: 'm_pp: cannot access private member declared in class CBase
这就奇怪了,友元函数不是能访问类的私有成员变量吗?怎么就不行了。
后来得知,原来我用的是VC++6.0编译器,在vs2005上就没问题了。或者把头文件包含写成
#include <iostream.h>
//using namespace std
就可以了。
相关文章推荐
- c++输入输出重载,赋值,加法运算符重载
- 从零开始学C++之运算符重载(一):以成员函数方式重载、以友元函数方式重载
- C++ 输入输出运算符重载
- C++编译时多态----运算符重载
- 浅谈C++类型转化(运算符重载函数)和基本运算符重载(自增自减)
- C++ 输入输出运算符重载
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- C++基础知识复习--运算符重载(非成员函数重载和成员函数重载)
- 【C++的探索路7】运算符重载的基本概念与赋值运算符重载
- C++编译时多态之运算符重载
- c++重载io输入输出操作符的一个简单例子
- C++学习笔记39——重载输入输出操作符
- 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ)
- Pro*c/c++ 在VC6.0中的编译方法
- 【c++面试题】c++中函数的重载,c++程序中调用C编译器编译后的函数为什么要加extern "C 4000 "
- C++ 运算符重载二(一元运算符重载)
- C++输入输出操作符的重载
- 【C++】输入输出运算符的重载
- 用C++编写递归函数GetPower(int x,int y)计算x的y次幂,在同一程序里中针对整型和实型实现两个重载的函数;在主程序中实现输入输出
- C++重载技术之运算符重载