引用为成员变量

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)

Naw*_*waz 6

两个要点:

  • 如果要将成员变量声明为Bank bank,则必须包含具有类定义的头文件Bank.正如您所做的那样,只需转发声明就会导致编译错误.

  • 但是,如果要将其声明为Bank & bankOR Bank *bank,则前向声明就足够了.Bank在这种情况下,不需要类的定义,除非您要访问任何成员Bank(例如,在类的某些成员函数的内联定义中TaxWay).