我有以下结构,其中一些是在框架中定义的,而另一些则不是,如评论中所示:
struct FixedInterface { // from the framework
virtual ~FixedInterface() {}
}
struct MyAdditionalInterface { // generic, personal/additional interface
};
我的程序中的以下结构可以从上述两种结构派生出来,并被使用/传递给强类型框架
struct MyFirstInterface : MyAdditionalInterface, FixedInterface {
};
struct MySecondInterface : FixedInterface {
};
struct MyThirdInterface : MyAdditionalInterface, FixedInterface {
};
// ...
struct MyNthInterface : FixedInterface {
};
现在框架让我定义和“注入”一个具有以下签名的自定义函数。框架在需要时调用此函数:
void MyClass::my_function(const FixedInterface& obj) {
}
在上述函数的主体中,我需要一种方法来知道 obj 是否是MyAdditionalInterface
(即MyFirstInterface
or MyThirdInterface
)的实例,以便我可以将 obj 转换为使用MyAdditionalInterface
.
我怎样才能获得这些信息?我可以自由地修改我的结构,只要我不改变层次结构并且MyAdditionalInterface
没有 vtable(没有虚函数或析构函数,原因是框架不允许我这样做)。
我可以免费使用Boost
以防万一。我可以访问 C++11。