C++ -世界经济论坛++;带有共享ptr的简单结构警告

C++ -世界经济论坛++;带有共享ptr的简单结构警告,c++,c++11,C++,C++11,我尝试用std::shared\u ptr编译非常简单的树节点。在我的编译器选项中,我使用-Weffc++和-Werror,但它会抛出两个我不理解的错误,因此我无法想象解决方案 最小示例(t.cpp): >我唯一能找到的类似的东西是,但它并没有在我的问题上回答。遗憾的是,< P>启用了有效的C++警告,编译器警告你没有遵循指南,喜欢初始化列表中的成员字段的显式初始化。 添加显式构造函数可能会解决以下问题: node() : left(), right(), value() {} 是否尝试添加

我尝试用
std::shared\u ptr
编译非常简单的树节点。在我的编译器选项中,我使用
-Weffc++
-Werror
,但它会抛出两个我不理解的错误,因此我无法想象解决方案

最小示例(t.cpp):


<> >我唯一能找到的类似的东西是,但它并没有在我的问题上回答。遗憾的是,

< P>启用了有效的C++警告,编译器警告你没有遵循指南,喜欢初始化列表中的成员字段的显式初始化。 添加显式构造函数可能会解决以下问题:

node() : left(), right(), value()
{}

是否尝试添加默认构造函数?看起来好像编译器生成的一个错误地被推断为constexpr@RichardHodges谢谢你,你的建议有助于清洁第二层,并警告康斯特普。然而,russw_uk的回答清除了所有警告。啊,酷。因此,它只是下降到effc标志。
$ LANG=en_US g++ -std=c++14 -Weffc++ t.cpp
t.cpp: In constructor 'constexpr node::node()':
t.cpp:3:8: warning: 'node::left' should be initialized in the member initialization list [-Weffc++]
 struct node {
        ^
t.cpp:3:8: warning: 'node::right' should be initialized in the member initialization list [-Weffc++]
t.cpp:3:8: warning: 'node::value' should be initialized in the member initialization list [-Weffc++]
t.cpp: In function 'int main()':
t.cpp:10:10: note: synthesized method 'constexpr node::node()' first required here 
     node n;
          ^
node() : left(), right(), value()
{}