我有以下示例程序
#include <iostream>
class MyClass
{
private:
int value;
public:
MyClass(int v) noexcept : value(v) {}
void displayValue() { std::cout << "The value is " << value; }
};
int main()
{
auto instance{ std::make_unique<MyClass>(5) };
instance->displayValue();
}
我运行代码分析时收到以下警告:
main.cpp(15):警告C26486:不要将可能无效的指针传递给函数。调用'MyClass :: displayValue'时参数0'@instance'可能无效(lifetime.3)。
有人可以确切地向我解释如何使用std::unique_ptr<MyClass>
来避免警告吗?
此外,在unique_ptr的初始化中,我收到以下警告:
main.cpp(14):警告C26414:移动,复制,重新分配或重置本地智能指针“实例”(r.5)。
我可以通过在std::make_unique
中使用std::move
来缓解此问题,但我认为这不是必须的。
编写此代码并避免从代码分析器收到警告的正确方法是什么?