gpt4 book ai didi

c++ - STL vector.push_back() 抽象类不编译

转载 作者:太空狗 更新时间:2023-10-29 19:42:49 28 4
gpt4 key购买 nike

假设我有一个包含类类型“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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com