7

我在 C++ 中创建了类,我希望它有一个字段Osoba&,但我得到一个奇怪的错误:

class Rachunek{
public:
    Osoba& wlasciciel;
    double stan_konta;
    Rachunek(Osoba* wlasciciel, double stan_konta){ //Uninitialized reference member
        this->wlasciciel = wlasciciel;
        this->stan_konta = stan_konta;

    }
};
4

2 回答 2

16

像这样使用初始化列表:(最佳方法)

class Rachunek{
public:
    Osoba& wlasciciel;
    double stan_konta;
    Rachunek(Osoba* wlasciciel, double stan_konta): 
        wlasciciel(*wlasciciel) , 
        stan_konta(stan_konta)  { //Uninitialized reference member


    }
};

您有一个引用作为成员,并且必须立即初始化一个引用。这种表示法允许在声明时进行初始化。如果您改为使用没有&它的普通成员,则可以正常工作。虽然这里呈现的风格更有效。

或者:(效率较低的方法)

class Rachunek{
public:
    Osoba wlasciciel; // Note missing & on the type. 
    double stan_konta;
    Rachunek(Osoba* wlasciciel, double stan_konta)
    {
        this->wlasciciel = *wlasciciel;  
        this->stan_konta = stan_konta;  

    }
};
于 2013-05-19T11:31:28.420 回答
3

您需要使用构造函数初始化列表

Rachunek(Osoba* wlasciciel, double stan_konta)
      :wlasciciel (*wlasciciel)
      ,stan_konta (stan_konta)
{ 
}

从您的代码中可以看出您缺乏很多基本的 C++ 知识,这很好,但请务必参考一本好书

于 2013-05-19T11:31:07.493 回答