如何从另一个类中的私有指针指向的类中获取私有信息?

时间:2013-05-18 07:13:57

标签: c++ pointers derived-class

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

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

我了解数据成员应该是私有的,但这是一个特例,或者我如何从Elf函数中获取main成员的信息?

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

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

2 个答案:

答案 0 :(得分: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;
};

答案 1 :(得分:1)

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

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