如何使用多重继承执行转换

Roh*_*bhu 4 c++ qt casting

我的类结构如下:

class MethodHelper : public QObject, public IMethodHelper {
public:
    // Stuff
};
Run Code Online (Sandbox Code Playgroud)

现在,我得到一个指向该对象的指针:

QObject* someObject = getMethodHelper();
Run Code Online (Sandbox Code Playgroud)

在这里,我非常确定这someObject是一种MethodHelper.我想以某种方式将其转换为IMethodHelper.我该怎么办呢?

我目前的想法是QObject -> MethodHelper -> IMethodHelper,像:

QObject* someObject = getMethodHelper();
MethodHelper* myHelper = qobject_cast<MethodHelper*>(someObject);
IMethodHelper* myIHelper = dynamic_cast<IMethodHelper*>(myHelper);
Run Code Online (Sandbox Code Playgroud)

我的方法有潜在的缺陷吗?

Dan*_* T. 7

你可以按照你提出的方式去做,但没有必要.下面应该工作正常.

IMethodHelper* myIHelper = dynamic_cast<IMethodHelper*>(someObject);
Run Code Online (Sandbox Code Playgroud)