Ce code donne error C2504: 'IKeyEvent': base class undefined
sur la ligne 3.dépendance circulaire irrécupérable
class IKeyEvent;
class EventDispatcher : private IKeyEvent {
public:
enum EEActions {
A_FEW_ACTIONS
};
private:
void OnKey(EventDispatcher::EEActions action, char multiplier);
}
class IKeyEvent {
public:
virtual void OnKey(EventDispatcher::EEActions action, char multiplier) = 0;
};
Vous ne pouvez pas hériter d'une classe jusqu'à ce qu'il soit défini, compréhensible. Mais je ne peux pas définir IKeyEvent
jusqu'à aprèsEventDispatcher
est défini.
Je sais que je peux déplacer cette enum
hors de la définition Event Dispatcher
pour la rendre globale mais cela nécessiterait de refactoriser une grande partie du programme. Est-il possible d'avoir EventDispatcher
hériter d'une classe dépendante de EventDispatcher
?
'Unfixable' est correct. – SLaks
Une classe de base qui nécessite un type déclaré dans une classe dérivée? Fondamentalement, quelque chose ne va pas dans ce design OO? –
@Murali: apparemment, c'est "juste" un problème de refactoring; IKeyEvent est ajouté maintenant, alors que EventDispatcher existe. Je ne pense pas qu'il soit fondamentalement mauvais d'ajouter des interfaces au fur et à mesure. –