Die*_*ser 1 c++ expression constants
我在以下代码的最后一行中收到"预期的常量表达式"错误:
int main() {
const float a = 0.5f;
const float b = 2.0f;
int array_of_ints[int(a*b + 1)];
}
Run Code Online (Sandbox Code Playgroud)
我想这是因为int(a*b + 1)在编译期间不知道的事实,对吧?我的问题是:有没有办法编写上面的例子,以便它可以工作,并array_of_ints有大小int(a*b + 1)?
任何帮助或洞察这里发生的事情将不胜感激:)
编辑:我意识到矢量会解决这个问题.但是,我希望数组的内容在堆栈上.
将两个常量声明为constexpr(遗憾的是仅在C++ 11之后可用):
int main() {
constexpr float a = 0.5f;
constexpr float b = 2.0f;
int array_of_ints[int(a*b + 1)];
}
Run Code Online (Sandbox Code Playgroud)
或者(对于C + 11之前的C++),您可以使用std::vector.