structBar{Bar(){}};structFoo{Foo()=default;Barm_bar;};intmain(){Foofoo;}当使用C++11default关键字和gcc警告-Weffc++时,gcc输出:warning:‘Foo::m_bar’shouldbeinitializedinthememberinitializationlist[-Weffc++]忽略此警告是否安全?我应该向gcc提交错误吗? 最佳答案 您可以忽略或抑制警告。这是对有效C++指南之一的误解。该指南说更喜欢初始化而不是赋值,但在您的示例中
structBar{Bar(){}};structFoo{Foo()=default;Barm_bar;};intmain(){Foofoo;}当使用C++11default关键字和gcc警告-Weffc++时,gcc输出:warning:‘Foo::m_bar’shouldbeinitializedinthememberinitializationlist[-Weffc++]忽略此警告是否安全?我应该向gcc提交错误吗? 最佳答案 您可以忽略或抑制警告。这是对有效C++指南之一的误解。该指南说更喜欢初始化而不是赋值,但在您的示例中
考虑以下程序:#includestructS{S(){}private:void*ptr=nullptr;std::stringstr="";};intmain(){}当在GCC4.7.1上使用-Weffc++编译时,会吐出:warning:'structS'haspointerdatamembers[-Weffc++]warning:butdoesnotoverride'S(constS&)'[-Weffc++]warning:or'operator=(constS&)'[-Weffc++]这通常没问题,除了这个例子中的几件事:如果我注释掉任何构造函数、指针声明或字符串声明,警告就会
我正在寻找一种简单的方法来查找未初始化的类成员变量。在runtime或compiletime中找到它们都可以。目前我在类构造函数中有一个断点,并一一检查成员变量。 最佳答案 如果您使用GCC,您可以使用-Weffc++标志,当变量未在成员初始化列表中初始化时会生成警告。这个:classFoo{intv;Foo(){}};导致:$g++-c-Weffc++foo.cpp-ofoo.ofoo.cpp:Inconstructor‘Foo::Foo()’:foo.cpp:4:warning:‘Foo::v’shouldbeinitializ
我正在寻找一种简单的方法来查找未初始化的类成员变量。在runtime或compiletime中找到它们都可以。目前我在类构造函数中有一个断点,并一一检查成员变量。 最佳答案 如果您使用GCC,您可以使用-Weffc++标志,当变量未在成员初始化列表中初始化时会生成警告。这个:classFoo{intv;Foo(){}};导致:$g++-c-Weffc++foo.cpp-ofoo.ofoo.cpp:Inconstructor‘Foo::Foo()’:foo.cpp:4:warning:‘Foo::v’shouldbeinitializ