c ++:"期望的常量表达式"

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)

任何帮助或洞察这里发生的事情将不胜感激:)

编辑:我意识到矢量会解决这个问题.但是,我希望数组的内容在堆栈上.

Sho*_*hoe 6

将两个常量声明为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.