C++ 将引用传递给类构造函数,“不提供初始值设定项”

C++ 将引用传递给类构造函数,“不提供初始值设定项”,c++,C++,我试图将类引用传递给字段,但出现错误“mazeGenerator::maze”引用必须初始化 我尝试在类构造函数上方初始化“迷宫” 为什么会这样 class mazeGenerator { public: Maze& maze; mazeGenerator(Maze& mazeObj) { maze=mazeObj; } } 必须使用成员初始值设定项列表初始化引用类型的数据成员,如下所示: mazeGenerator(Maze&am

我试图将类引用传递给字段,但出现错误“mazeGenerator::maze”引用必须初始化

我尝试在类构造函数上方初始化“迷宫”

为什么会这样

class mazeGenerator {
public:
    Maze& maze;

    mazeGenerator(Maze& mazeObj) {
        maze=mazeObj;
    }
}


必须使用成员初始值设定项列表初始化引用类型的数据成员,如下所示:

mazeGenerator(Maze& mazeObj) : maze(mazeObj) {}
const数据成员也是如此

注意,将数据成员的声明放在构造函数之上实际上没有任何区别;它也可以在下面声明


此外,您的数据成员无论是否为引用类型,都应该是类的私有成员。

了解初始化和赋值之间的区别。您的代码正在执行后者。正是它所说的。引用必须进行初始化,以便在创建时引用某些内容。赋值maze=mazeObj将maze引用的对象的值赋值为mazeObj的值。在类中,只能在构造对象时初始化引用成员,这是在构造函数初始化器列表mazeGeneratorMaze&mazeObj:mazemazemazeObj{}中完成的。假设传递的mazeObj是在其他代码中构造的,并且将在mazeGenerator对象存在的时间内继续存在。