使用全局类对象数组的变量时的问题

时间:2019-02-11 02:37:09

标签: c++ arrays object

我是使用全局类对象数组的新手,我正在尝试创建相同的对象,但是有错误。

Object.cpp

class Foo {
    public:
       bool a = false; 
};



Funtion.cpp

Foo* foos[10]

void DoSomething1(int index) { // index input is given sequentially from 0 to 10

if ( foos[index]->a == false) {
    foos[index]->a = true;
    DoSomething2(index);
}

但是如果索引为0时if语句出现一次。 当index为1时,“ foos [index]-> a”已经为true。 但这不是我想要的。 在输入if语句之前,我希望所有的“ foos [index]-> a = false”。

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

您实际上并没有创建任何Foo,仅创建了Foo*的数组,因此访问foos[index]->a实际上是未定义的行为。

尽管取决于您的实际需求,但将其更改为Foo foos[10]即可使用。