/ / -Weffc ++ предупреждение за проста структура с shared_ptr - c ++, c ++ 11

-Weffc ++ предупреждение за проста структура с shared_ptr - c ++, c ++ 11

Опитвам се да компилирам много прост дървен възел с std::shared_ptr, В моите компилатор опции, които използвам -Weffc++ и -Werror но той хвърля 2 грешки, които не разбирам, затова не мога да си представя решение.

Минималният пример (t.cpp):

#include <memory>

struct node {
std::shared_ptr<node> left;
std::shared_ptr<node> right;
std::shared_ptr<int> value;
};

int main() {
node n;
return 0;
}

Изходът от компилатора е:

$ 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;
^

Единственото подобно нещо, което можех да намеря, е този въпрос но това не отговаря на въпроса ми за съжаление.

Отговори:

0 за отговор № 1

С активирано предупреждение за ефективно C ++, компилаторът предупреждава, че не следвате насоките, за да предпочитате изрично инициализиране на полетата за членове в списъка с инициализатори.

Добавянето на изричен конструктор вероятно ще се отърве от това:

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