1

无论如何,在 C++ 编译时确保数组参数的长度?这样:

void foo(T arr[3]);

int main()
{
    T a[5] = { /* ... */ };
    foo(arr);
    return 0;
}

会产生编译时错误吗?

是使用模板类型确保这一点的唯一方法

template <int N, class T>
struct Array{
   T arr[N];
};

void foo(Array<3, T> &arr);

int main()
{
   Array<5, T> a;
   foo(a);
   return 0;
}

还是有更惯用的方法来处理这个?

4

1 回答 1

2

如果你真的想要编译时错误,你可以定义函数来引用:

void foo(T (&arr)[3]);
于 2013-11-04T23:46:02.880 回答