c++ - 构造函数初始化错误

标签 c++ constructor reference initialization

我正在创建一个简单的纸牌游戏基础,现在我正在处理创建代表每个玩家的对象的类。不过构造函数似乎有问题:“Spelare”的构造函数必须显式初始化引用成员“leken”

class Spelare {
public:
    Spelare(Kortbunt& kortlek, bool ar_dator) {leken = kortlek; dator = ar_dator;} //Constructor
    int spela();

private:
    Kortbunt hand; //The cards in the players hand
    Kortbunt& leken; //The cards on the table
    const bool dator; //Is this player a computer?
};

最佳答案

将构造函数更改为:

Spelare(Kortbunt& kortlek, bool ar_dator) : leken(kortlek), dator(ar_dator) {} 

问题是引用一旦被声明和初始化就不能重新赋值。您的构造函数尝试声明但不初始化引用,然后分配给它 - 但失败了。

您需要通过构造函数的初始化列表来初始化引用。您还需要对 dator 执行相同的操作,因为它是 const - 但它通常只是一种很好的做法。

关于c++ - 构造函数初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22301745/

相关文章:

c++ - 构建/销毁过程中的虚拟调用

java - 我可以在 Java 中调用 Enums 构造函数吗?

c++ - 在这些情况下将如何处理推荐人?

c++ - 将 unique_ptr 分配给引用时,在成员函数之前调用析构函数

c++ - 用于选择 vector/集合元素的位掩码?

c++ - 函数deadline_timer::async_wait()的参数

javascript - Javascript继承对象需要 "Subclass.prototype.constructor = Subclass"吗?

PHP真正的SESSION对象

c++ - 如何使用 iofstream 将函数的输出写入文件?

c++ - vulkan-hpp中的奇怪C++语法