運算符重載的時候出錯??
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)
2017-01-06
這據說是VC的一個經典BUG。和namespace也有關.??
只要含有using namespace std; 就會提示友員函數沒有訪問私有成員的權限。?
解決方法:去掉using namespace std;換成更小的名字空間。 ?
using std::endl; using std::cout;
using std::ostream;
或者將重載運算符函數放在Coordinate類中去定義。
親測兩種均有效
2016-08-13
應該是VC++6.0的問題,把私有改成共有就行了,就是破壞了類的封裝
2016-08-13
我的也是這樣的,在類里有friend也不可以QAQ說是不能訪問private成員
2016-05-29
可以加個friend,這樣就能private成員