错误:在CPP中无效使用非静态数据成员

时间:2018-01-29 15:06:44

标签: c++

我是C ++的新手,我正在努力做到以下几点:

class abc {
    public:
    int no_of_consumer;
    struct def {
        int p = 0;
        int c = 0;
    };
    def variable[no_of_consumer - 1];
};

int main() {
    abc obj1;
    obj1.no_of_consumer = 1;
};

我希望变量no_of_consumermain()函数设置,以便我可以使用此变量为变量def定义结构数组。但是我收到了这个错误:

  

无效使用非静态数据成员“no_of_consumer”。

我在这里错过了一些概念吗?

1 个答案:

答案 0 :(得分:4)

问题在于:

def variable[no_of_consumer - 1];
             ^^^^^^^^^^^^^^^^^^

在C ++中,数组大小必须是常量表达式。如果您想拥有动态大小的数组,请改用std::vector

请注意,您还需要自定义逻辑来调整矢量大小;如评论中所述,您无法自动依赖变量的值。