unique_ptr无法初始化

时间:2016-08-23 09:12:30

标签: c++ initialization unique-ptr member-initialization

我在项目中有以下代码,它给我一个错误C2059,语法错误" new" unique_ptr行错误。

#include <memory>

class Nothing {
public:
    Nothing() { };
};
class IWriter
{
    public:
        IWriter() {
        }

        ~IWriter() {
        }
    private:
        std::unique_ptr<Nothing> test(new Nothing());
};

这里发生了什么?

1 个答案:

答案 0 :(得分:4)

您尝试使用default member initializer,但方式错误。它必须只是一个大括号初始化程序(或等于初始化程序)(包含在成员声明中)。

您可以使用list initialization(自C ++ 11起):

std::unique_ptr<Nothing> test{ new Nothing() };

member initialization list

class IWriter
{
    public:
        IWriter() : test(new Nothing) {
        }
        ~IWriter() {
        }
    private:
        std::unique_ptr<Nothing> test;
};