我的电脑装vs2008总是报错,不得已装了个VC6 sp6暂时先用用,发现使用重载输入输出运算符时有问题
demo3.h:
#include
<
iostream.h
>
class demo3
{
public:
demo3();
virtual ~demo3();
friend ostream& operator << (ostream& out,const demo3& d);
friend istream& operator >> (istream& in,demo3& d);
private:
int x;
} ;
class demo3
{
public:
demo3();
virtual ~demo3();
friend ostream& operator << (ostream& out,const demo3& d);
friend istream& operator >> (istream& in,demo3& d);
private:
int x;
} ;
#include " stdafx.h "
#include " demo3.h "
/**/ //
// Construction/Destruction
/**/ //
demo3::demo3()
{
}
demo3:: ~ demo3()
{
}
ostream & operator << (ostream & out , const demo3 & d)
{
out<<d.x<<endl;
return out;
}
istream & operator >> (istream & in ,demo3 & d)
{
return in;
}
编译后报错:
error C2248: 'x' : cannot access private member declared in class 'demo3'
查了下网上的资料,说是vc6的bug,而在vc8中就没问题,暂时的解决办法是将#include<iostream>改为#include<iostream.h>