有没有办法将STL触发器与不可复制的元素一起使用?
如下所示:
class noncopyable
{
noncopyable(noncopyable&);
const noncopyable& operator=(noncopyable&);
public:
noncopyable(){};
};
int main()
{
list<noncopyable> MyList; //error C2248: 'noncopyable::noncopyable' : cannot access private member declared in class 'noncopyable'
}发布于 2009-09-17 17:49:08
不能,不可复制的元素不能在C++容器类中。
根据该标准23.1第3款,“存储在这些组件中的对象类型必须满足CopyConstructible类型(20.1.3)的要求,以及Assignable类型的附加要求。”
发布于 2009-09-17 17:43:27
一种选择是创建一个指向元素的指针列表(最好是shared_ptr)。这不完全是你想要的,但它会完成工作。
发布于 2009-09-18 11:47:05
另一种选择是使用Boost Pointer Container library。如果可能的话,它的行为就像std::auto_ptrs的标准容器:它保留其元素的独占所有权,并且不能被复制。它也比标准的shared_ptrs容器有更少的开销。
https://stackoverflow.com/questions/1440287
复制相似问题