我想要完成的是:
inline const int size() { return 256; }
int main()
{
int arr[size()];
return 0;
}
但是 Visual Studio 在初始化 arr[size()] 时给了我一个错误:expression must have a constant value
有没有办法在不使用全局变量、宏、std::vector 或在堆上创建 arr[] 的情况下完成我想要的?
最佳答案
放下 inline
和 const
并添加 constexpr
说明符代替,以解决问题:
constexpr int size() { return 256; }
现在您可以将其用作数组大小,例如:int arr[size()];
在 C++(不是 C)中,必须在编译时知道数组的长度。 const
限定符仅表示在程序运行期间不得更改值。通过使用
constexpr
您将指定函数的输出是一个已知常量,甚至在程序执行之前。
关于c++ - 如何初始化一个长度等于 const int 方法返回值的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65685036/