如何在类中声明常量size_t

How do I declare a const size_t inside a class?

本文关键字:常量 size 声明      更新时间:2023-10-16

我正在尝试在我的类中使用C++数组:

#include <array>
#include <iostream>
using namespace std;
class Test {
    private:
        const size_t NCOL = 4;
        array<int, NCOL> row;
    public:
        Test(){}
        ~Test(){}
};  
int main() {
    Test t;
    return 0;
}

但是我收到以下错误消息,我不知道为什么:

test.cpp:9:14:错误:无效使用非静态数据成员"Test::NCOL"   array<int,> row;              ^~~~测试.cpp:8:23:注意:在此处声明   常量 size_t NCOL = 4;                       ^test.cpp:9:14:错误:无效使用非静态数据成员"Test::NCOL"   array<int,> row;              ^~~~测试.cpp:8:23:注意:在此处声明   常量 size_t NCOL = 4;                       ^test.cpp:9:14:错误:无效使用非静态数据成员"Test::NCOL"   array<int,> row;              ^~~~测试.cpp:8:23:注意:在此处声明   常量 size_t NCOL = 4;                       ^test.cpp:9:18:错误:模板参数 2 无效   array<int,> row;

我该如何解决这个问题?

答案就在错误消息中:

无效使用非静态数据成员"Test::NCOL">

NCOL不是static,所以它是每个Test实例的数据成员,并在运行时构造Test时获取其值。 不能在模板参数中使用运行时数据值。

改为NCOL static,然后编译器可以将其用作编译时常量,就像您希望的那样:

static const size_t NCOL = 4;