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