我是c ++的新手,如果有人能帮助解决以下问题,我将不胜感激。
当我想创建一个可变大小(S)的数组(Arr)时,我会按以下方式进行:
const int S=10;
int Arr[S];
但是,在我尝试编写的代码中,我需要从表中选择S.假设我有以下表格:
int Table[3]={11, 21, 31};
我从表中选择S并定义Arr
const int S=Table[0];
int Arr[S];
我无法编译此代码,因为我得到一个错误,S必须有一个常量具有常量值。
我将不胜感激任何帮助/提示。
答案 0 :(得分:1)
要解决此问题,您需要声明Table constexpr:
void foo() {
const int S=10;
int Arr[S];
constexpr int Table[3]={11, 21, 31};
constexpr int S2=Table[0];
int Arr2[S2];
}
说明:通过声明表constexpr
,您可以让编译器知道它在编译时知道它的内容。现在可以在使用文字常量时使用它,包括数组大小。我已经展示了使用中间constexpr
变量来更好地说明这种效果,但您可以直接使用Table[0]
作为Arr2
大小。
<强> NB 即可。 constexpr
是在C ++ 11中引入的关键字,但我认为,在2016年默认使用此方言是安全的。