- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试用 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;
^
我能找到的唯一类似的东西是 this question但不幸的是,它没有回答我的问题。
最佳答案
启用 Effective C++ 警告后,编译器会发出警告,表明您没有遵循更喜欢对初始化列表中的成员字段进行显式初始化的指南。
添加显式构造函数可能会摆脱这种情况:
node() : left(), right(), value()
{}
关于c++ - -Weffc++ 对带有 shared_ptr 的简单结构的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808866/
这个问题在这里已经有了答案: Understanding -Weffc++ (3 个答案) 关闭 4 年前。 我很难理解这个错误。我正在编译 -Weffc++旗帜。 此结构编译正常。 struct
考虑以下程序: #include struct S { S (){} private: void *ptr = nullptr; std::string str = "";
我对 Weffc++ 警告有理解上的问题。 main.cpp: In constructor ‘B::B()’: main.cpp:13:1: warning: ‘B::a’ should be in
我有一个名为 Coord 的类...它有实例数据 x、y。我想重写 * 运算符,以便 * 运算符可用于将 Coord 乘以整数或 double 值!这是我提出的解决方案: Coord& Coord::
我有一些代码 here我正在使用 -Weffc++ -Wall -Wextra 进行编译。 基本上我有这个片段: class base {}; class test : public base { p
我尝试用 std::shared_ptr 编译非常简单的树节点。在我的编译器选项中,我使用了 -Weffc++ 和 -Werror 但它抛出了 2 个我不理解的错误,因此我无法想象解决方案。 最小示例
我收到 -Weffc++ 发出的警告,这似乎是错误的。我可以用第二双眼睛来确认: template class CLASS_TYPE, typename T> class some_class { t
我对一个分为不同子项目的大型项目使用 boost build。这里是 jamroot 文件: project : requirements debug:DEBUG releas
我有一个使用很多很多库的大项目。其中一些是 HDF5、PugiXML、Boost.ASIO、Qt、MuParser 等等。这些库有的是header包含的,有的是预编译的,有的是我自己编译的。我想使用
假设我有这样一个类: class MyClass { private: vector myMember; public: MyClass(const Y
我想知道,-Weffc++ 标志是否有等效的 MSVC(++)?它是几号? 我在 MS website 上的编译器警告/错误列表中没有看到类似的内容. 最佳答案 没有任何等价物。 Visual C++
struct Bar { Bar() {} }; struct Foo { Foo() = default; Bar m_bar; }; int main() { Fo
这是一个重载的||在我的类中定义的运算符: bool operator|| (const MyClass& v) const { return ......; //some calculat
我是一名优秀的程序员,十分优秀!