【发布时间】:2017-09-11 11:00:40
【问题描述】:
我在 c++ 程序中遇到以下错误:
可变大小的数组类型‘int [size]’不是一个有效的模板 论据
对于以下程序:
#include <iostream>
using namespace std;
template <typename T>
void func (T& Array)
{
cout << "Hi";
}
int main ()
{
int size = 100;
int arr [100];
int arr1 [size];
func (arr); // compiled
func (arr1); // gives error
}
请帮我解决这个问题。我想从某个变量中获取数组的大小。 提前致谢。
【问题讨论】:
-
C++ 实际上并没有variable-length arrays,尽管一些编译器将它添加为语言的扩展。
-
您在模板函数
func(T& Array)中如何处理Array?你不会用它做任何事情。要解决您的问题,您可以使用动态分配,但模板不是解决方案。 -
至于您的问题,请记住模板是纯编译时特性。变长数组是在运行时创建的。
-
我们无法真正告诉您解决方案,因为我们不知道您想用这个解决的实际问题。您要求我们帮助您解决(对我们而言)未知问题的解决方案,这称为the XY problem。
-
std::vector<int> arr1(size);可能会起作用。