J'ai le code suivant en utilisant l'héritage multiple. Le but est d'utiliser deux interfaces comme l'un dans la classe dérivée:Quelle classe de base appelle la méthode dérivée dérivée?
struct InterfaceA
{
virtual void register_stuff();
virtual void on_state_changed(const State state) = 0;
};
struct InterfaceB
{
virtual void register_stuff();
virtual void on_state_changed(const State state) = 0;
};
struct Derived : InterfaceA, InterfaceB
{
void register_stuff() override
{
InterfaceA::register_stuff();
InterfaceB::register_stuff();
}
void on_state_changed(const State state) override
{
// how can I know who is responding?
}
};
Enregistrement des interfaces provoquera un appel asynchrone à on_state_changed
. Est-il possible de discerner quelle interface l'appelle?
Si vous avez besoin de l'information, pourquoi ne pas ajouter un paramètre vous indiquant ce dont vous avez besoin? –
Ou simplement évitez d'utiliser l'héritage multiple. – Ron
Je pense que ce [article] (http://www.cprogramming.com/tutorial/multiple_inheritance.html) a quelques informations à ce sujet sous le sous-titre écueil. – Mekicha