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

How can I get private information from a class pointed to by a private pointer inside another class?

本文关键字:获取 信息 指针 内部 另一个      更新时间:2023-10-16

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

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

我明白数据成员应该是私有的,但这是一个特殊情况,或者我如何从main函数中获得Elf成员的信息?

void Player::set_character(Creature &c)
{
  character = &c;
}
...
Player me;
Elf me_elf;
me.set_character(me_elf);

您可以通过Player的公共方法:

class Creature
{
 public:
  virtual void hello() const = 0;
};
class Player{
 public:
  void hello() const { charatcer->hello(); }
  // other methods as before
 private:
  Creature* character;
};

如果存在"has a"关系,则必须使用包装器函数来访问数据。

如果你有一个"是一个"的关系,你将能够访问数据,如果数据是"保护"。没有其他麻烦。设置protected允许派生类访问数据。