【发布时间】:2017-05-26 23:00:42
【问题描述】:
我有一个返回void* 的函数。现在,当这个函数完成时,一个UINT16*数组作为void*返回。 UINT16 数组是在方法开始时创建的,但现在我需要一种方法来确定数组的类型并改为创建该类型。例如,发生了一些数据处理,确定应该创建一个int类型的数组,所以创建并返回一个int数组。也可以创建其他类型,例如 double 和 byte。
我该如何实现这一目标?
我当前的代码有
UINT16* data_out = new UINT16[arraySize];
我知道我可以创建一个大的 if/else 或 switch 语句,但我想知道是否有更好的方法。
【问题讨论】:
-
boost::variant 也许吧。
-
如果您的问题只是
if/else,请使用开关 -
模板专业化
-
您的问题不清楚。为什么不想使用
if语句? -
如果您的函数返回
void*并且数组的类型是在您的函数内部确定的,那么您将遇到问题,因为在 C++ 中没有从void*进行隐式转换。因此,要使用函数返回的类型,您必须知道类型。
标签: c++ arrays pointers object if-statement