我正在写一个或多或少看起来像这样的课程
struct Foo {
std::shared_ptr<Bar> bar_ptr;
Foo(std::shared_ptr<Bar> b)
: bar_ptr(std::move(b)) {}
};
和Set up Dex发出警告
(表演)功能参数&#39; b&#39;应该通过引用传递。
我的印象是,在这种情况下,b
不应该是任何类型的引用。这将允许Foo
的实例可选地完全控制资源(原始共享指针)与
auto bar1 = std::make_shared<Bar>(...);
Foo my_foo(bar1); // bar1 remains untouched
Foo your_foo(std::move(bar1)); // takes complete control of the bar1
// resource; bar1 now invalid
我没有正确使用某些东西,或者这不是cppcheck知道的东西吗?
答案 0 :(得分:2)
我是Cppcheck开发人员。在我看来,这是一个误报,Cppcheck不应该警告。可能我们不应该警告任何函数中的std :: shared_pointer参数。我创建了这张票:http://trac.cppcheck.net/ticket/8400