具有公共基类的多个虚拟继承
Multiple virtual inheritance with common base class
我最近读了一些代码来学习更多关于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
类的定义位置,并确保它被正确包含。
相关文章:
- 大小虚拟继承中的派生类
- C++ 多级虚拟继承编译问题
- 如何正确获得虚拟继承?
- 避免C++虚拟继承
- 虚拟继承基构造函数消除
- 虚拟继承中是否存在多重继承?
- 了解虚拟继承类 vtables 和 vptr 创建
- 当键是虚拟继承中涉及的基类指针时,对 std::unordered_map 项的访问崩溃
- 我是否需要在虚拟继承类的构造函数中初始化基类以解决菱形继承问题?
- C++ 不明确访问 - 虚拟继承
- 虚拟继承中来自基数的虚拟调用
- 虚拟继承:调用没有匹配函数
- 虚拟继承的内部机制
- 联合虚拟继承
- C++虚拟继承类的大小
- C++虚拟继承、虚拟析构函数和 dynamic_cast<void*>
- 虚拟继承构造函数的组装
- 虚拟继承情况下类的意外大小
- 虚拟继承情况下的 vtable
- C++解决没有虚拟继承的钻石继承问题