arj*_*soh 0 c++ reference member
有人可以解释一下为什么代码中的TaxWay类不可能保存由引用初始化的成员变量Bank吗?我应该在代码中更改什么才能使其正确?当我将成员变量更改为引用时Bank&,它就可以工作了.我认为同样的情况应该发生在"非参考变量"上.怎么做到呢?
class Bank;
class TaxWay : public Way
{
public:
TaxSquare(int, int, Bank&);
virtual void process();
private:
int taxAmount;
Bank bank;
};
TaxWay::TaxWay(int anID, int amount, Bank& theBank)
: Way(anID),taxAmount(amount),bank(theBank)
{
}
Run Code Online (Sandbox Code Playgroud)
我创建一个对象:
TaxWay TaxWay9(9,150, theBank);
Run Code Online (Sandbox Code Playgroud)
两个要点:
如果要将成员变量声明为Bank bank,则必须包含具有类定义的头文件Bank.正如您所做的那样,只需转发声明就会导致编译错误.
但是,如果要将其声明为Bank & bankOR Bank *bank,则前向声明就足够了.Bank在这种情况下,不需要类的定义,除非您要访问任何成员Bank(例如,在类的某些成员函数的内联定义中TaxWay).