【发布时间】:2018-01-18 16:38:48
【问题描述】:
我有以下使用多重继承的代码。目的是在派生类中将两个接口合二为一:
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 的异步调用。是否可以辨别是哪个接口调用它?
【问题讨论】:
-
如果你需要这些信息,为什么不添加一个参数告诉你你需要什么?
-
或者干脆避免使用多重继承。
-
我认为article 在陷阱副标题下有一些关于此的信息。
-
@BoPersson 我无法修改接口:那些来自库
-
@Ron 答案是“没有办法知道”吗?
标签: c++ overriding multiple-inheritance