有沒有辦法在C++編譯時確保數組參數的長度?如此:在編譯時確保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;
}
還是有處理這種更習慣的方法?
不要創建它。它已經爲你完成了:'std :: array' /'boost :: array'。不過,這是正確的解決方案。 – chris
我剛剛發現,做了一些更深入的谷歌搜索。我似乎無法找到多維數組的解決方案。將一個C++ 11樣式的typedef是圍繞正確的方式: '模板使用array2d =陣列 ,N>' –
user1569339