#include <iostream>
template<class T> T CreateArray(T a, int n)
{
a = new T [n]; // mistake: double* = double**
return a;
}
int main()
{
double* a;
int n = 5;
a = CreateArray(a,n);
return 0;
}
我可以使用模板和新的分配内存吗?我的错误是什么?
最佳答案
您的代码有一些错误。首先,你可以做一些你想做的事情,但你应该这样写:
template<class T> T* CreateArray(int n)
{
T* a = new T [n];
return a;
}
int main()
{
double* a;
int n = 5;
a = CreateArray<double>(n);
return 0;
}
请注意,您不必传递 a
数组(它将在 CreateArray
中复制,并且其更改在 main 中不可见
)。另请注意,您将模板定义为返回指针 T*
,这正是 main()
a
所期望的。
关于c++ - 模板和内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513545/