我是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_consumer
由main()
函数设置,以便我可以使用此变量为变量def
定义结构数组。但是我收到了这个错误:
无效使用非静态数据成员“no_of_consumer”。
我在这里错过了一些概念吗?
答案 0 :(得分:4)
问题在于:
def variable[no_of_consumer - 1];
^^^^^^^^^^^^^^^^^^
在C ++中,数组大小必须是常量表达式。如果您想拥有动态大小的数组,请改用std::vector
。
请注意,您还需要自定义逻辑来调整矢量大小;如评论中所述,您无法自动依赖变量的值。