关于 友元 重载 operator<< ();不能访问类的私有数据的问题..再线等答案..谢谢..
#ifndef mytime_h_
#define mytime_h_
#include <iostream>
using namespace std;
class CTime
{
private:
int m_hours;
int m_minutes;
public:
.....
friend ostream & operator << (ostream & os, const CTime & st);
};
#endif
-----------------------------------------------------------------------
//friend mothed
ostream & operator << (ostream & os, const CTime & st)
{
os << st.m_hours << " hours, " << st.m_minutes << "minutes." << endl;
return os;
}
-------------------------------------------------------------------------
编译错误.....
--------------------Configuration: 11_2 - Win32 Debug--------------------
Compiling...
mytime.cpp
g:\vc++6.0\answertoc++primerplus\11_2\mytime.cpp(69) : error C2248: 'm_hours' : cannot access private member declared in class 'CTime'
g:\vc++6.0\answertoc++primerplus\11_2\mytime.h(10) : see declaration of 'm_hours'
g:\vc++6.0\answertoc++primerplus\11_2\mytime.cpp(69) : error C2248: 'm_minutes' : cannot access private member declared in class 'CTime'
g:\vc++6.0\answertoc++primerplus\11_2\mytime.h(11) : see declaration of 'm_minutes'
Error executing cl.exe.
mytime.obj - 2 error(s), 0 warning(s)
========================================================================
不明白了 我的代码到底那里出了问题,用友元居然说不能访问类的私有数据....
如果把friend ostream & operator << (ostream & os, const CTime & st);再类里写成内联就不会出现编译错误.
public:
ostream & operator << (ostream & os, const CTime & st)
{
os << st.m_hours << " hours, " << st.m_minutes << "minutes." << endl;
return os;
}
----------------------------------
请大家指点...谢谢..