Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将模板类的成员初始化为此 在C++中,将类成员初始化为此时,它工作正常,直到类是模板类: template<typename T> class A { public: A* next; A() : next(this) {} }; 模板 甲级{ 公众: A*下一步; A():下一个(这个){} };_C++_Templates_C++17 - Fatal编程技术网

将模板类的成员初始化为此 在C++中,将类成员初始化为此时,它工作正常,直到类是模板类: template<typename T> class A { public: A* next; A() : next(this) {} }; 模板 甲级{ 公众: A*下一步; A():下一个(这个){} };

将模板类的成员初始化为此 在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将始终初始化。因此,我不知道它试图传达的是什么问题。我能想到的

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