首页 > 解决方案 > 无法在具有恒定大小的类中创建数组

问题描述

尝试在具有恒定大小的类中创建数组时出现 GCC 编译器错误。如果在主函数中做同样的事情就可以了。

const int n[] = { 4, 18 };
class C{
    int a[n[0]];//error: array bound is not an integer constant before ']' token
};

int main() {
    int b[n[0]];//it's ok here
}

标签: arraysclassconstants

解决方案


如果你改变

const int n[] = { 4, 18 };

constexpr int n[] = { 4, 18 };

它可以工作(刚刚用 gcc 7.4.0 测试过)。该数组被声明为在编译时进行评估,这是创建具有恒定大小的数组所必需的。


推荐阅读