在以下代碼中,我需要將std::array
的大小作爲函數參數。我首選std::array
至std::vector
,因爲容器的大小不應該改變。但是,編譯器抱怨爲error: ‘n’ is not a constant expression
。如何通過函數參數獲取數組的大小?獲取std :: array的第二個參數(大小)作爲函數參數
main.cpp中:
#include <iostream>
#include <array>
using namespace std;
void fnc(const int n)
{
array<int,n> a;
}
int main()
{
fnc(5);
return 0;
}
模板參數必須是在編譯時已知值的表達式,因爲它們成爲模板特化類型的一部分。因此,函數參數不能用作模板參數。這反映'array'的大小固定在* compile-time *。 –
dyp
如果你想有一個不允許大小變化的數據結構,你可以編寫一個簡單的'std :: vector'包裝器。 – dyp
@Shibli你的例子沒有顯示你用正確的參數調用'fnc'。你打算如何使用它? – Pradhan