Visual Studio 2013中的编译器错误C2758

Compiler Error C2758 in Visual Studio 2013

本文关键字:编译器 错误 C2758 Studio 2013 Visual      更新时间:2023-10-16

我有这几行:

class ModulePeople : public Module {
public:
   std::list<People> & list_people;
   std::list<People>::iterator it;
}

当我试图编译时,我出现了以下错误:

Compiler Error C2758 
'ModulePeople': a member of reference type must be initialized

此错误出现在此行中,例如:

it = list_people.begin();

但我真的不知道如何初始化这种变量,因为我不能对NULL进行初始化。如果有人能帮助我,我将不胜感激。

引用是某个地方有存储空间的现有对象的别名。这意味着引用必须引用(并非双关语)现有对象,它不像一个值为nullptr的指针。

这意味着,如果您使用引用作为类定义的成员字段,则必须通过此类对象的任何可用构造函数对其进行初始化,例如:

class ModulePeople : public Module {
public:
   std::list<People> & list_people;
   std::list<People>::iterator it;
   ModulePeople(decltype(list_people) list_people) : list_people(list_people) { }
}

如果你真的想让它指向任何东西,那么可以使用指针,例如std::list<People>*