我有一个类,需要将其存储在unique_ptr的向量中。但是,我看到一个C2664错误,如下所示:“ AffinityThreadGroup :: AffinityThreadGroup(AffinityThreadGroup &&)无法将参数1从_Ty转换为“ const AFfinityThreadGroup&”。因为此类包含互斥量,所以它是不可移动且不可复制的。这种情况下使用unique_ptr的正确方法是什么?还是需要向类中添加什么其他实现?我试图调整复制构造函数并移动分配操作符而没有成功。
我以以下方式添加到向量中:myVec.emplace_back(std::make_unique<AffinityThreadGroup>(new AffinityThreadGroup));
其中myVec为vector<unique_ptr<AffinityThreadGroup>> myVec;
class AffinityThreadGroup
{
private:
std::vector<AffinityThread> threads;
mutable boost::shared_mutex m;
KAFFINITY maxValidBitMask;
WORD maxValidCpuGroup;
//...some functions
public:
AffinityThreadGroup()
{
setMaxValidMask();
setMaxValidCpuGroup();
}
~AffinityThreadGroup() {}
//...some functions
};'
在这种情况下,使用unique_ptr的正确方法是什么?
此:
std::make_unique<AffinityThreadGroup>();