我正在尝试实现一个 C++ 类,它的value
字段可以指向任何东西(有点像 boost::any)。目前我执行以下操作:
class MyClass {
void* value;
template<typename T>
Myclass(const &T v) {
value = (void*)(new T(v));
}
};
现在的问题是实现一个 getValue() 操作,该操作创建具有正确类型的内部值的副本:
template<typename T>
T getValue() {
return *value;
}
在这里它不能工作,因为我试图取消引用 void* 指针。我想知道我应该使用哪个强制转换(static_cast?dynamic_cast?其他...),以便 *value 正确转换为 T 对象,如果 value 最初不是这种类型,则会引发异常?
谢谢