ostream &operator<<(ostream &out,Coordinate &coor)
{
out<<"("<<coor.m_iX<<","<<coor.m_iY<<")"<<endl;
return out;
}
--------------------Configuration: 栈 - Win32 Debug--------------------
Compiling...
Coordinate.cpp
G:\VC++ 6.0\MyProjects\栈\Coordinate.cpp(17) : error C2248: 'm_iX' : cannot access private member declared in class 'Coordinate'
g:\vc++ 6.0\myprojects\栈\coordinate.h(13) : see declaration of 'm_iX'
G:\VC++ 6.0\MyProjects\栈\Coordinate.cpp(17) : error C2248: 'm_iY' : cannot access private member declared in class 'Coordinate'
g:\vc++ 6.0\myprojects\栈\coordinate.h(14) : see declaration of 'm_iY'
执行 cl.exe 时出错.
栈.exe - 1 error(s), 0 warning(s)
这据说是VC的一个经典BUG。和namespace也有关.
只要含有using namespace std; 就会提示友员函数没有访问私有成员的权限。
解决方法:去掉using namespace std;换成更小的名字空间。
using std::endl; using std::cout;
using std::ostream;
或者将重载运算符函数放在Coordinate类中去定义。
亲测两种均有效
应该是VC++6.0的问题,把私有改成共有就行了,就是破坏了类的封装
我的也是这样的,在类里有friend也不可以QAQ说是不能访问private成员
可以加个friend,这样就能private成员