gpt4 book ai didi

c++ - 如何将 int* -或- float* 分配给 void* 并稍后使用结果?

转载 作者:行者123 更新时间:2023-11-30 03:57:32 28 4
gpt4 key购买 nike

我是 C++ 新手,我的问题如下:

我需要一个我想要保存值的数组。所有值都是同一类型。有两种情况:数组应该保存 int 值或 float。当我编译时,我还不知道它将是哪种类型,所以必须在执行程序时定义它。

我试过这样的:

void* myArray;
int a = 10;
if(something){
myArray = new int[a];
}
else{
myArray = new float[a];
}

之后我想用这些值计算东西,但我总是会出错,因为数组仍然是空的

最佳答案

在 C++ 中有几种方法可以做到这一点:

  • 你可以使用 void*并添加 reinterpret_cast<...>根据需要,
  • 你可以制作一个 union 的数组同时具有 int 的 s和一个 float , 或
  • 您可以使用模板。

前两种方法是 C 的惯用方法,但不是 C++ 的惯用方法。这两种方法都是可行的,但它们会导致难以理解和维护的解决方案。

第三种方法让你做事非常干净:

template <typename T>
void calc() {
// You could use std::vector<T> here for even better flexibility
T* a = new T[10];
... // Perform your computations here
delete[] a;
// You don't need a delete if you use std::vector<T>
}

int main() {
...
// You can make a type decision at runtime
if (mustUseInt) {
calc<int>();
} else {
calc<float>();
}
return 0;
}

关于c++ - 如何将 int* -或- float* 分配给 void* 并稍后使用结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908084/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com