假设我有一个包含类类型“xx”的 STL vector 。 xx 是抽象的。我遇到了以下问题:当我执行以下操作时,编译器不会让我“实例化”:
std::vector<xx> victor;
void pusher(xx& thing)
{
victor.push_back(thing);
}
void main()
{
;
}
我认为这是因为必须调用复制构造函数。我通过在 vector 中存储 xx* 而不是 xx 来解决这个问题。有更好的解决方案吗?它是什么?
最佳答案
当您使用 push_back
时,您正在制作对象的拷贝并将其存储在 vector 中。正如您所猜测的,这不起作用,因为您无法实例化抽象类,这基本上是复制构造所做的。
建议使用指针,或者是 boost 和 loki 等库中可用的众多智能指针类型之一。
关于c++ - STL vector.push_back() 抽象类无法编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1256395/