c++ - 静态常量类成员作为成员数组的初始值设定项

标签 c++ static constants

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/

相关文章:

c++ - 带 abs() 的方程给出了错误的答案 (gcc/g++)

c++ - 带一维数组的动态编程 USACO 培训 : Subset Sums

c# - 使用静态变量的并发

c++ - C++中的比较

memory - OpenCL:使用什么类型的内存?

c++ - 我可以将( boost )绑定(bind)与功能模板一起使用吗?

c++ - 在循环内使用 list.push_back(),绕过使迭代器无效

linux - 静态 IP 设置为在 beagle bone 上为 Angstrom Linux 保留 dns 名称服务器

java - 使用 Mockito 模拟静态方法