Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用get/set方法在子对象中更改其父类成员变量的值?_C++_Oop_Parent Child - Fatal编程技术网

C++ 如何使用get/set方法在子对象中更改其父类成员变量的值?

C++ 如何使用get/set方法在子对象中更改其父类成员变量的值?,c++,oop,parent-child,C++,Oop,Parent Child,我正在编写一个空间入侵者文本游戏,在子类对象中设置父类的类变量值时遇到了一些问题。我想通过访问它所属的外星群对象来更改外星对象的外星状态 我有一门外星人课: enum class Alien_State { AS_ALIVE = 0, AS_DEAD, AS_EXPLODING }; class Alien : public StaticObject{ protected: Alien_State alienState; Alien_Type alien

我正在编写一个空间入侵者文本游戏,在子类对象中设置父类的类变量值时遇到了一些问题。我想通过访问它所属的外星群对象来更改外星对象的外星状态

我有一门外星人课:

enum class Alien_State {
    AS_ALIVE = 0,
    AS_DEAD,
    AS_EXPLODING
};

class Alien : public StaticObject{
protected:
    Alien_State alienState;
    Alien_Type alienType;
public:
    Alien();
    virtual ~Alien() = default;

    // GET METHODS
    inline Alien_State getAlienState() const { return alienState; }
    inline Alien_Type getAlienType() const { return alienType; }

    // SET METHODS
    inline void setAlienState(const Alien_State alien_state) { alienState = alien_state; }
    inline void setAlienType(const Alien_Type alien_type) { alienType = alien_type; }
};
(我不添加StaticObject实现,因为它与这个问题无关)

还有AlienSwarm课程:

class AlienSwarm
{
protected:
    Position position;
    std::vector<std::vector<Alien>> aliens;
    int numAliensLeft;
public:
    AlienSwarm();

    // GET METHODS
    inline Position getPosition() const { return position; }
    inline std::vector<std::vector<Alien>> getAliens() const { return aliens; }
    inline int getNumAliensLeft() const { return numAliensLeft; }

    // SET METHODS
    inline void setPosition(const int& x, const int& y) { this->position.x = x; this->position.y = y;
};
我可以通过执行以下操作从Alien_swarm中获取外星人的Alien_状态值:Alien_swarm.getAliens().at(0).at(0).getAlienState() 但我不知道如何才能将set方法链起来设置AlienState值


提前感谢您的帮助,问候

get异形
返回成员变量的副本。您应该返回一个引用,而不是[Unrelated]Add方法AlienSwarm::setAliensState(Alien_State Alien_State){std::for each(Alien.begin(),Alien.end(),[Alien_State](auto&Alien){Alien.setAlienState(Alien_State);}非常感谢@UnholySheep!我没有考虑返回引用,这正是我需要的=)
int main(void)
{
    AlienSwarm alien_swarm;
    for (auto& alien_row : alien_swarm.getAliens()) {
        for (auto& alien : alien_row) {
            alien.setAlienState(Alien_State::AS_DEAD); // Example
        }
    }
    return 0;
}