具有公共基类的多个虚拟继承

Multiple virtual inheritance with common base class

本文关键字:虚拟 继承 基类      更新时间:2023-10-16

我最近读了一些代码来学习更多关于c++编程的知识,我遇到了一些奇怪的事情。

我得到一个类声明:

class myClass : public QObject, public virtual myObject::myOtherObject::myInterface {
    Q_OBJECT
    public: [...]
}

在编译时,我得到了以下错误:

error: expected class-name before '{' token
error: myInterface is not a member of 'myObject::myOtherObject'

这是一个语法错误吗?我想不出是什么问题……

你知道解决办法吗?

非常感谢:)

编辑:接口是不相关的,解决方案在别处。尽管如此,答案还是有帮助的。

这是一个语法错误吗?

不,你的代码语法正确。下面的代码编译得很好,没有错误:

#include <QObject>
namespace myObject {
  namespace myOtherObject {
    class myInterface {
    };
  }
}
class myClass : public QObject, public virtual myObject::myOtherObject::myInterface {
    Q_OBJECT
    public:
};

因此,您需要检查myInterface类的定义位置,并确保它被正确包含。