San*_*nto 3 c++ stl vector copy-constructor
假设我有一个包含类类型"xx"的stl向量.xx是抽象的.我遇到过这样的问题:当我执行以下操作时,编译器不会让我"实例化":
std::vector<xx> victor;
void pusher(xx& thing)
{
victor.push_back(thing);
}
void main()
{
;
}
Run Code Online (Sandbox Code Playgroud)
我认为这是因为必须调用复制构造函数.我通过将xx*存储在向量而不是xx中来解决这个问题.有更好的解决方案吗?它是什么?
Ste*_*idi 12
使用时push_back,您正在制作对象的副本并将其存储在向量中.正如你推测的那样,这不起作用,因为你无法实例化一个抽象类,这基本上就是复制结构正在做的事情.
建议使用指针,或者像boost和loki这样的库中提供的众多智能指针类型之一.