假设我有一个名为Handler的类,它有一些子类,例如StringHandler、SomeTypeHandler、AnotherTypeHandler。类Handler定义了一个"handle"方法作为所有子类的公共接口。当然,不同的处理程序具有完全不同的"handle"逻辑。
因此,我需要做的是将任何值传递给handle方法。特定的类可以将"anything"转换为他们期望的类型。
基本上我需要的是像Java类Object一样的东西:D
我尝试的第一件事是使用void*,但显然你不能这样做B* someB = dynamic_cast(theVoidPointer),所以没什么运气。
我的第二个想法是使用boost::any。然而,使用boost::any的要求是该值必须可复制构造,而我的数据并非如此。
有什么想法可以让这个工作吗?
谢谢
编辑:请注意,我知道我可以使用一个没有成员的SomeData类,并让我的数据成为其子类,但我正在寻找一种更通用的方法,不需要我自己创建包装器类。
因此,我需要做的是将任何值传递给handle方法。特定的类可以将"anything"转换为他们期望的类型。
基本上我需要的是像Java类Object一样的东西:D
我尝试的第一件事是使用void*,但显然你不能这样做B* someB = dynamic_cast(theVoidPointer),所以没什么运气。
我的第二个想法是使用boost::any。然而,使用boost::any的要求是该值必须可复制构造,而我的数据并非如此。
有什么想法可以让这个工作吗?
谢谢
编辑:请注意,我知道我可以使用一个没有成员的SomeData类,并让我的数据成为其子类,但我正在寻找一种更通用的方法,不需要我自己创建包装器类。
dynamic_cast
,而不能使用reinterpret_cast
吗? - Marc Bollinger