我有以下代碼使用多重繼承。目的是在派生類使用兩個接口,一個:哪個基類調用派生重寫方法?
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?
}
};
註冊的界面會造成on_state_changed
的異步調用。是否有可能辨別哪個接口正在調用它?
如果你需要這些信息,爲什麼不添加一個參數來告訴你你需要什麼? –
或者乾脆不要使用多重繼承。 – Ron
我覺得這個[文章](http://www.cprogramming.com/tutorial/multiple_inheritance.html)在陷阱小標題下有一些這方面的信息。 – Mekicha