我正在尝试使用私有成员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;
};