如何初始化一个长度等于constint方法返回值的数组?

我想要完成的是:

inline const int size() { return 256; }

int main()
{
    int arr[size()];

    return 0;
}

但是 Visual Studio 在初始化 arr[size()] 时给了我一个错误:

表达式必须有一个常量值

有没有办法在不使用全局变量、宏、std::vector 或在堆上创建 arr[] 的情况下完成我想要的?

回答

删除inlineandconst并添加constexpr说明符,以解决问题:

constexpr int size() { return 256; }

现在您可以将其用作数组大小,例如:

int arr[size()];

在 C++(不是 C)中,必须在编译时知道数组的长度。const限定符仅表示在程序运行期间不得更改值。

通过使用,constexpr您将指定函数的输出是一个已知常量,甚至在程序执行之前也是如此。


以上是如何初始化一个长度等于constint方法返回值的数组?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>