在一个头文件中有:
using namespace std;
#include<cstring>
class CWorker; //类的提前引用声明
class CAcount {
public:
CAcount(string name, const string acountnum, double change, string wNum, string wName, int wAge);
private:
string Name;
const string AcountNum; //常数据成员只能用列表初始化
CWorker w1;
};
CAcount::CAcount(string name, const string acountnum, string wNum, string wName, int wAge) :AcountNum(acountnum)
{
Name = name;
w1.workerNum = wNum;
w1.workerName = wName;
w1.workAge = wAge;
};
class CWorker {
public:
CWorker(string wNum, string wName, int wAge);
CWorker();
~CWorker();
private:
string workerNum;
string workerName;
int workAge;
};
会出现这个问题:CWorker类中的成员无法访问
为什么呢?
因为啊每一个类是封装起来的,就算在一个类中用另一个类定义了一个数据成员,也是无法通过(对象名.其数据成员)直接操作另一个类中的数据成员的。
解决方法:
只需在那个需要 “被” 操作数据成员的类(B类)中声明—操作者类(A类)是它的友元类即可(如这里的只需在CWorker类中声明CAcount为该类的友元 friend class CAcount; )