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;
}