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。
抱歉我的英语不好。
答案 0 :(得分:3)
您应该使用unsigned 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将是指向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;
};