static const class member作为成员数组的初始化程序

时间:2015-12-24 21:27:28

标签: c++ static const

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。

抱歉我的英语不好。

1 个答案:

答案 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;
};