是__declspec(dllexport)of :: vector <std :: unique_ptr <user-defined type =“”>&gt;可能?

时间:2015-12-02 21:21:54

标签: c++ stl unique-ptr dllexport

我正在尝试使用私有成员std::vector<std::unique_ptr>导出一个类。 dll客户端应该使用Number个对象,所以我实例化了它。但是现在我遇到了一个编译器错误:

error C2280: 'std::unique_ptr<Number,std::default_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : attempting to reference a deleted function
1>          with
1>          [
1>              _Ty=Number
1>          ]

这是我的测试代码

class __declspec(dllexport) Number
{
public:
    int i;
};

template class __declspec(dllexport) std::vector<std::unique_ptr<Number>>; // to avoid warning C4251

class __declspec(dllexport) A
{
public:
    A(){}
    ~A(){}
    A(A&&) {}
    A& operator=(A&&) { return *this; }

    Number& getNumber(int i) { return *v[i]; }
private:
    A(const A&);
    A& operator=(const A&);

    std::vector<std::unique_ptr<Number>> v;
};

0 个答案:

没有答案