У меня два класса, PlayerCharacter
и Ability
.Класс Ability
имеет чисто виртуальную функцию, которую я объявляю от friend
до PlayerCharacter
.Тем не менее, я не могу получить доступ к закрытым членам в объявленной функции friend
.Я что-то упускаю из виду?
Я пытался объявить дочернюю функцию, а не виртуальную, как функцию друга, но безрезультатно.
player_chracter.h:
#include "ability.h"
class PlayerCharacter : public Character {
private:
// Friend function
friend bool Ability::ExecuteAbility(PlayerCharacter& in_player);
// This doesn't work either
//friend bool Dash::ExecuteAbility(PlayerCharacter& in_player);
// Private variable
float top_speed_;
}
способность.ч:
//Forward declaration
class PlayerCharacter;
class Ability {
public:
Ability();
~Ability();
virtual bool ExecuteAbility(PlayerCharacter& in_player) = 0;
};
//---------------------------------------------------------
class Dash : public Ability {
public:
Dash();
~Dash();
bool ExecuteAbility(PlayerCharacter& in_player);
};
способность.cpp:
#include "ability.h"
#include "player_character.h" //Follow through on forward declaraction
bool Dash::ExecuteAbility(PlayerCharacter& in_player) {
float example = in_player.top_speed_;
}
ВКод выше, почему я не могу получить доступ к top_speed_
и поместить его в переменную float example
?