我有一个类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);
答案 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)
如果您有“有”关系,则必须使用包装函数来访问数据。
如果您有“是”关系,那么如果数据是“受保护的”,您将能够访问数据。没有任何其他麻烦。受保护允许派生类访问数据。