【发布时间】:2013-06-08 21:16:59
【问题描述】:
我使用 Visual Studio 2012
我的目标:
用户给出数组大小 -> 函数将数据返回到 const 变量 -> 并创建数组。 有可能吗?
这是我的代码 sn-ps:
const int user_get_array_size()
{
int a;
bool blokada;
do
{
cout << "Podaj wielkość tablicy: ";
cin >> a;
//Jeśli cin nie mógł zapisać danych do inta.
//Lub wielkość tablicy mniejsza od 1? (Po co nam analizować coś co ma )
if(cin.fail() || a < 2)
{
blokada = true;
//Czyszczenie Cina z syfów.
//Cin wchodzi char by char
//while(cin)
//{
cin.clear(); //Czyszczenie CINA
//}
cin.ignore();
system("CLS");
cout << "Wielkość tablicy musi być liczą wiekszą od 1 \n(Wkońcu ten program ma coś analizować.) \n";
}
else
{
blokada = false;
}
}
while(blokada);
return a;
}
const int w_array = user_get_array_size();
int tablica[ w_array ];
我收到错误:表达式必须具有常量值?
我的错在哪里?
【问题讨论】:
-
对于数组的维度,您需要一个编译时间常数(或 C++11
constexpr)。在这种情况下,您的const int只是在无法修改的意义上是恒定的。它不是编译时间常数。看看std::vector或 C++14std::dynarray。 -
@juanchopanza,或 C++14 VLA。
标签: c++ arrays function constants