繁体   English   中英

静态const类成员,作为成员数组的初始化程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM