0

我有一个类,Player它的成员变量Creature *character将指向Elf : public Creature派生类。

我希望能够声明一个Player对象,然后让它的一个成员指向 aElf并获取信息。

我知道数据成员应该是私有的,但这是一种特殊情况还是如何Elf从我的main函数中的成员那里获取信息?

void Player::set_character(Creature &c)
{
  character = &c;
}

...
Player me;
Elf me_elf;
me.set_character(me_elf);
4

2 回答 2

2

您可以通过以下公共方法执行此操作Player

class Creature
{
 public:
  virtual void hello() const = 0;
};

class Player{
 public:
  void hello() const { charatcer->hello(); }
  // other methods as before
 private:
  Creature* character;
};
于 2013-05-18T07:33:17.340 回答
1

如果您有“有”关系,则必须使用包装函数来访问数据。

如果您有“是”关系,则如果数据受到“保护”,您将能够访问数据。没有任何其他麻烦。具有保护允许派生类访问数据。

于 2013-05-18T07:36:30.830 回答