У меня есть класс State и другая игра класса друзей. Мой вопрос в том, что если у меня есть класс MenuState, который расширяет State, является также MenuState другом игры?Класс ребенка наследует дружбу
EDIT:
Так что, если у меня есть такая ситуация:
class Game
{
private:
StateManager* myStateManager = new StateManager();
}
class State
{
public:
static void create(StateManager* Parent, const std::string name) {};
private:
StateManager* parent;
}
#define DECLARE_STATE_CLASS(T) \
static void create(StateManager* Parent, const std::string name) \
{ \
T* myState = new T(); \
myState->parent = Parent; \
Parent->manageState(name, myState); \
} \
class MenuState : State
{
public:
DECLARE_STATE_CLASS(MenuState)
}
int main()
{
Game app;
MenuState::create(This needs to be the stateManager in app, "MenuState");
app.init("MenuState");
}
Как я могу сделать эту работу, не делая государственный менеджер общественность?
Нет, проверьте следующее, дружба не будет унаследована. http://stackoverflow.com/questions/3561648/why-does-c-not-allow-inherited-friendship –
См. Исходный вопрос. –