我正在研究一个结构:
struct memory {
enum data_type {
INT, DOUBLE, SHORT
};
data_type dtype;
void* get_data_handle() {
// ...
}
};
使用这个结构,我可以在内存中描述一些数据,包括它的类型(使用枚举dtype
)和数据指针。我无法修改此结构的设计。
现在我想处理数据,所以我可以先使用函数get_data_handle
来获取void
指针,然后将指针转换为相应的类型。例如,如果我有一个对象memory m;
,并且我事先知道m.dtype = memory::data_type::DOUBLE
,那么我可以安全地使用reinterpret_cast<double*>(m.get_data_handle()>
来获取具有正确类型的数据指针。
这是一个问题,当我事先不知道dtype
时,是否有任何优雅的方法可以做到这一点?就像这样:
auto data_ptr = reinterperet_cast<get_type(m.dtype)>(m.get_data_handle());