访问容器类变量的对象 - C ++

时间:2013-12-28 00:36:07

标签: c++ variables object sharing

对象如何访问属于包含它的类的变量? 现在我有一个名为system的类,它包含一些其他对象,这些对象需要访问和修改System类中的一个变量。

示例:

Class System {
BlockA _blockA = new BlockA();
BlockB _blockB = new BlockB();
BlockC _blockC = new BlockC();
BlockD _blockD = new BlockD();
int myVariable;

...stuff...
}

Class BlockA {
...stuff...
void someFunction () {
System.myVariable++;
}
...stuff...
}

etc...

2 个答案:

答案 0 :(得分:0)

好吧,所以我想到了更多,并意识到在初始化对象时,我会传递指向感兴趣的变量的指针。这样所有对象都可以读取该变量。对于有这个问题的其他人,如果你需要写,你必须确保该变量是原子的。

答案 1 :(得分:0)

很难确切地知道你所追求的是什么,但却出现了以下几点:

#BlockA.h
#ifndef BLOCKA_H
#define BLOCKA_H

class System;

class BlockA {
    System* sys;

public:
    BlockA(System* sys) : sys(sys) {}

    void SomeFunction();
};

#endif // BLOCKA_H

#BlockA.cpp
#include "System.h"

void BlockA::SomeFunction() {
    sys->setMyVariable(sys->getMyVariable() + 1);
}

#System.h
#ifndef SYSTEM_H
#define SYSTEM_H

class BlockA;

class System {
    BlockA* _blockA;

    int myVariable;

public:
    System();

    int getMyVariable() const;
    void setMyVariable(int value);
    BlockA& getBlockA() const;
};

#endif // SYSTEM_H

#System.cpp
#include "System.h"
#include "BlockA.h"

System::System()
    : _blockA(new BlockA(this)) { }

int System::getMyVariable() const {
    return myVariable;
}

void System::setMyVariable(int value) {
    myVariable = value;
}

BlockA& System::getBlockA() const {
    return *_blockA;
}