【问题标题】:How do I declare a const size_t inside a class?如何在类中声明 const size_t?
【发布时间】:2018-03-17 01:19:23
【问题描述】:

我正在尝试在我的班级中使用 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”的使用无效 数组 行; ^~~~ test.cpp:8:23: 注意:在这里声明 常量大小_t NCOL = 4; ^ test.cpp:9:14:错误:非静态数据成员“Test::NCOL”的使用无效 数组 行; ^~~~ test.cpp:8:23: 注意:在这里声明 常量大小_t NCOL = 4; ^ test.cpp:9:14:错误:非静态数据成员“Test::NCOL”的使用无效 数组 行; ^~~~ test.cpp:8:23: 注意:在这里声明 常量大小_t NCOL = 4; ^ test.cpp:9:18:错误:模板参数 2 无效 数组 行;

我该如何解决这个问题?

【问题讨论】:

  • 你想要conststatic。这不是 C#。

标签: c++ arrays class


【解决方案1】:

答案就在错误消息中:

非静态数据成员“Test::NCOL”的使用无效

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

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

static const size_t NCOL = 4;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2011-01-10
    相关资源
    最近更新 更多