假设我有一个包含类类型“xx”的 STL vector 。 xx 是抽象的。我遇到了以下问题:当我执行以下操作时,编译器不会让我“实例化”:

std::vector<xx> victor;
void pusher(xx& thing)
{
    victor.push_back(thing);
}

void main()
{
    ;
}

我认为这是因为必须调用复制构造函数。我通过在 vector 中存储 xx* 而不是 xx 来解决这个问题。有更好的解决方案吗?它是什么?

最佳答案

当您使用 push_back 时,您正在制作对象的拷贝并将其存储在 vector 中。正如您所猜测的,这不起作用,因为您无法实例化抽象类,这基本上是复制构造所做的。

建议使用指针,或者是 boostloki 等库中可用的众多智能指针类型之一。

关于c++ - STL vector.push_back() 抽象类无法编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1256395/

10-11 19:18
查看更多