首页 > 解决方案 > 有没有一种可能的方法将 c++ 数组大小设置为函数的返回值

问题描述

我对 C++ 很陌生,所以请多多包涵:我希望将数组的大小设置为函数的输出,例如:

//this is not the actual function, (go figure)
int getSizeInt(int size)
{
    return size;
}

int main()
{
    char charArray[getSizeInt(6)]; // Error: *function call must have a constant value in a constant expression*
    return 0;
}

这可能是不可能的,我真的不知道。我用谷歌搜索了这个问题,并一直在修改初始化数组的不同方法,但无济于事。

标签: c++arrays

解决方案


有没有一种可能的方法将 c++ 数组大小设置为函数的返回值

是的。

数组变量的大小必须是编译时常量。如果函数是constexpr并且其参数本身是常量表达式,则函数调用是常量表达式。

您的函数不满足这些约束,因此它的返回值不能用作数组变量的大小。

但是,它可以用作动态数组的大小。创建动态数组的最简单方法是使用std::vectorstd::string如果您的意图是表示文本,可以考虑使用):

std::vector<char> charArray(getSizeInt(6));

推荐阅读