class sarray
{
public:
static const unsigned int iarr_size;
void add(const char c ) {}
private :
unsigned char iarr[iarr_size];
unsigned int off;
public
};
为什么unsigned char iarr[iarr_size]
给我一个关于iarr_size的非常量表达式错误?
iarr_size 被声明为 const。
抱歉我的英语不好。
最佳答案
您应该使用无符号整数初始化iarr_size。 例如:
class sarray
{
public:
static const unsigned int iarr_size = 5;
void add(const char c ) {}
private :
unsigned char iarr[iarr_size];
unsigned int off;
public
};
更好的解决方案是成员iarr将是一个指向unsigned char的指针,并在构造函数中使用new来分配数组:
class sarray
{
public:
sarray()
{
int i = 5; // any int
iarr = new unsigned char[i];
}
void add(const char c) {}
private:
unsigned char* iarr;
unsigned int off;
};
关于c++ - 静态常量类成员作为成员数组的初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34458051/