gpt4 book ai didi

c++ - 可以容纳任何东西的非模板容器

转载 作者:太空狗 更新时间:2023-10-29 20:00:26 25 4
gpt4 key购买 nike

我有一个用于处理线程的小型框架。主要部分是一个对象,它基本上是一个受互斥锁控制的 std::queue 对象,一个线程将其插入,另一个线程从中弹出。

这个类不能被模板化,因为对象的类型可以在一次运行中变化。目前,我创建了一个哑类:

class Object {
public:
Object(){}
virtual ~Object(){}
};

任何要通过此类在线程之间流动的对象都必须继承自 Object,因为它是 std::queue 所持有的。这很有效,但我认为必须有更好的方法,因为这种方法需要继承和多次调用 dynamic_cast。有什么想法吗?

编辑 这种情况下的指针也是智能指针,因此维护类型信息很重要。

最佳答案

使用 std::queue< boost::any >。它将容纳任何类型的对象。

要获取对象,您必须使用 boost 本身提供的特殊转换函数:

关于c++ - 可以容纳任何东西的非模板容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986080/

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