[英]static const class member as initializer to member array
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]
会给我unsigned char iarr[iarr_size]
一个非恒定的表达式错误?
iarr_size声明为const。
对不起,我的英语不好。
您应该使用无符号int初始化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将是指向无符号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;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.