将模板类的成员初始化为此 在C++中,将类成员初始化为此时,它工作正常,直到类是模板类: template<typename T> class A { public: A* next; A() : next(this) {} }; 模板 甲级{ 公众: A*下一步; A():下一个(这个){} };
Visual Studio发出警告C26495:始终初始化成员变量。当类是模板类时,为什么会出现此问题?如何解决此问题?或者这是VS的问题?< /P>我使用VisualStudio内置编译器(V16.4用于Visual C++ V1424)。给定的代码已经产生了警告。与@walnut看到的警告相同,带有一个简单的非模板类,因此如果移除模板头,C26495不存在?(我自己无法测试)我想说,在这种情况下,警告显然不一致。代码正常,将模板类的成员初始化为此 在C++中,将类成员初始化为此时,它工作正常,直到类是模板类: template<typename T> class A { public: A* next; A() : next(this) {} }; 模板 甲级{ 公众: A*下一步; A():下一个(这个){} };,c++,templates,c++17,C++,Templates,C++17,Visual Studio发出警告C26495:始终初始化成员变量。当类是模板类时,为什么会出现此问题?如何解决此问题?或者这是VS的问题?< /P>我使用VisualStudio内置编译器(V16.4用于Visual C++ V1424)。给定的代码已经产生了警告。与@walnut看到的警告相同,带有一个简单的非模板类,因此如果移除模板头,C26495不存在?(我自己无法测试)我想说,在这种情况下,警告显然不一致。代码正常,next将始终初始化。因此,我不知道它试图传达的是什么问题。我能想到的
next
将始终初始化。因此,我不知道它试图传达的是什么问题。我能想到的唯一替代方法(但这仍然与它仅出现在模板中的方法不一致)是警告希望您将this
初始化移动到默认成员初始值设定项(a*next=this;
),这就是C++核心指南和警告是基于这些准则的代码质量警告。警告不是错误。在初始值设定项列表中传递此
,可能会很危险,因为对象未完全初始化。不过对你来说没问题。