我有一个返回void*
的函数。现在,完成此功能后,将返回UINT16*
数组作为void *。 UINT16
数组是在方法开始时创建的,但是现在我需要一种确定数组类型并创建该类型的方法。例如,发生一些数据处理并确定应创建int类型的数组,因此将创建并返回一个int数组。也可以创建其他类型,例如double和byte。
我该如何实现这一目标?
我当前的代码有
UINT16* data_out = new UINT16[arraySize];
我知道我可以创建一个大型的if / else或switch语句,但是我想知道是否有更好的方法。
最佳答案
大概是这样吗?
这将不起作用,但是感谢您的支持。实际上,它可以工作,但是您必须知道Foo
返回的类型才能使用它。但是类型是在Foo
内部确定的,这是一个严重的概念缺陷。您应该重新考虑您希望其工作的方式。
enum class ArrayType
{
Int,
Double
};
template <typename T>
T* CreateArray(size_t size)
{
T* t = new T[size];
return t;
}
void* Foo(param1, param2, etc..)
{
size_t size;
ArrayType type;
.. Do things to determine the type
switch(type)
{
case ArrayType::Int:
return CreateArray<int>(size);
case ArrayType::Double:
return CreateArray<double>(size);
default:
return 0;
}
return 0;
}
关于c++ - 创建可以是几种类型的C++数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41602987/