我的类结构是这样的:

class MethodHelper : public QObject, public IMethodHelper {
public:
    // Stuff
};

现在,我得到一个指向该对象的指针:
QObject* someObject = getMethodHelper();

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

我目前的想法就像 QObject -> MethodHelper -> IMethodHelper ,比如:
QObject* someObject = getMethodHelper();
MethodHelper* myHelper = qobject_cast<MethodHelper*>(someObject);
IMethodHelper* myIHelper = dynamic_cast<IMethodHelper*>(myHelper);

我的方法是否存在潜在缺陷?

最佳答案

您可以按照您介绍的方式进行操作,但这不是必需的。下面应该可以正常工作。

IMethodHelper* myIHelper = dynamic_cast<IMethodHelper*>(someObject);

10-08 08:11