【问题标题】:Multiple virtual inheritance with common base class具有公共基类的多重虚拟继承
【发布时间】:2013-02-14 20:50:06
【问题描述】:

我最近浏览了一些代码以了解有关 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'

这是某个地方的语法错误吗?我不知道是什么问题...

你知道什么是解决办法吗?

非常感谢:)

编辑:界面无关紧要,其他地方的解决方案。尽管如此,答案还是有所帮助。

【问题讨论】:

  • 我们怎么知道?您还没有向我们展示 myObject、myOtherObject、myInterface 的声明。
  • 缺少包含myOtherObject#include

标签: c++ interface virtual


【解决方案1】:

这是某个地方的语法错误吗?

不,您的代码在语法上是正确的。以下编译正常,没有错误:

#include <QObject>

namespace myObject {
  namespace myOtherObject {
    class myInterface {
    };
  }
}

class myClass : public QObject, public virtual myObject::myOtherObject::myInterface {
    Q_OBJECT
    public:
};

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

【讨论】:

  • 嗯,是的,我会努力的。有结果我会回来的
  • 好吧,我发现...这里使用的接口无关紧要。没关系,很抱歉给您带来麻烦,顺便说一句,您的回答很棒。
猜你喜欢
  • 2013-11-19
  • 2014-08-16
  • 2011-10-15
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 2016-03-04
  • 2017-03-31
  • 1970-01-01
相关资源
最近更新 更多