如何在类中声明常量size_t
How do I declare a const size_t inside a class?
我正在尝试在我的类中使用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;
相关文章:
- #定义c-预处理器常量..我做错了什么
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 用C++中的一个变量定义一个常量
- 什么时候在C++中返回常量引用是个好主意
- 代理对象的常量正确性
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 通过多个头文件使用常量变量
- 在cuda线程之间共享大量常量数据
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 大于65535的C++数组[size]引发不一致的溢出
- 是默认情况下分配给char数组常量的值
- 为什么(-1)%vector::size()总是返回0
- 私有类型的静态常量成员
- 类似枚举的计算常量
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- vector::size() 如何在常量时间内返回向量的大小
- 错误:"SIZE"在使用模板<类 T、int MAX_SIZE >时无法出现在常量表达式中
- 调用 size() 的常量映射<字符串,矢量<int>>导致错误
- std::map 如何提供常量 size() 操作