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


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

这是一个简单的类,但是我遇到了此汇编错误。 no是恒定的,所以我认为这不应该是问题。

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

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

因此,除非您制作 no static,否则不能将其用作数组大小,因为这可能意味着每个实例中的大小不同。

最新更新