非模板化容器,可以容纳任何东西

ste*_*225 3 c++ stl

我有一个用于处理线程的小框架.主要部分是一个对象,它基本上是一个互斥控制的对象,std::queue一个线程推入,另一个线程弹出.

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

class Object {
public:
    Object(){}
    virtual ~Object(){}
};
Run Code Online (Sandbox Code Playgroud)

通过此类从线程流向线程的任何对象都必须继承,Object因为它是std::queue保持的.这很好用,但我想必须有一个更好的方法,因为这种方法需要继承和许多调用dynamic_cast.有任何想法吗?

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

Naw*_*waz 6

使用std :: queue < boost :: any >.它将保存任何类型的对象.

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