使用const变量时无效使用非静态数据成员

时间:2019-02-27 06:05:42

标签: c++

class Try {
    const int no = 5;
    int arr[no];
};

这是一个简单的类,但出现此编译错误。 no是常量,因此我认为应该不是问题。

1 个答案:

答案 0 :(得分:12)

arr在类的所有实例中必须具有相同的大小。 no是const,但这仅表示在创建实例后它永远不会更改。 不是并不意味着对于所有实例而言,它始终都是相同的。例如,可以在构造函数的初始化列表中设置no

Foo::Foo(int size) : no(size)
{}

因此,除非将no设置为静态,否则不能将其用作数组大小,因为这将暗示每个实例中数组的大小可能不同。