假设我有一个类处理程序,其中包含一些子类,如 stringhandler、SomeTypeHandler、AnotherTypeHandler。类 Handler 将方法“handle”定义为所有子类的公共接口。对于不同的处理程序,“处理”的逻辑当然是完全不同的。
所以我需要做的就是将任何值传递给 handle 方法。然后,特定的类可以将“任何东西”转换为他们期望的类型。
基本上我需要的是类似于 java 类 Object :D
我尝试的第一件事是 a void*
,但显然你做不到B* someB = dynamic_cast<B*>(theVoidPointer)
,所以那里没有运气。
我的第二个想法是使用boost::any
. 但是,使用 boost::any 的要求是该值必须是可复制的,而我的数据并非如此。
有什么想法可以让它发挥作用吗?
谢谢
编辑:请注意,我知道我可以使用一个根本没有成员的 SomeData 类,并让我的数据成为它的子类,但我正在寻找一种更通用的方法,它不需要我制作自己的包装类。