我有一个返回 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/