【发布时间】:2014-03-11 23:00:05
【问题描述】:
我有以下无法编译的代码。
using namespace std;
void f(int);
template<typename T1, size_t N>
void array_ini_1d(T1 (&x)[N])
{
for (int i = 0; i < N; i++)
{
x[i] = 0;
}
}
如果 main 如下所示,传递数组的正确方法是什么。
int main()
{
int a;
cin >> a;
int n = a / 4;
f(n);
return 0;
}
void f(int n)
{
int arr[n];
array_ini_1d(arr);
}
错误:没有匹配的函数可以调用 array_ini_1d.......
【问题讨论】:
-
你得到什么错误?请注意,您可以像这样对数组的元素进行零初始化:
int arr[10] = {}; -
只要定义了
size_t,代码应该没有问题。就目前的问题而言,答案是“这是正确的方法”。需要更多信息来诊断问题。 -
为我编译。你有什么错误?你用什么编译器?
-
您需要包括例如
<stddef.h>代表size_t(或<cstddef>并说using std::size_t)以保证您的代码示例无需进一步更改即可编译。 -
@user29561 是的,没关系。请发布一个简单的代码示例来重现该问题。否则我们只是猜测:)
标签: c++ arrays templates variable-length-array gcc-extensions