从枚举

时间:2017-07-17 03:07:26

标签: c++ pointers struct enums

我正在研究一个结构:

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());

0 个答案:

没有答案