“”之前的预期类名
Posted
技术标签:
【中文标题】“”之前的预期类名【英文标题】:expected class-name before ‘’“”之前的预期类名 【发布时间】:2013-12-26 15:00:18 【问题描述】:好吧,我是 Qt 的新手,但对 C++ 来说不是很新,错误对递归包含有效,但看看我的代码,我没有看到任何递归包含..我认为这是其他任何人都可以帮助我跟随错误:
“”标记之前的预期类名
这是我的代码:
#ifndef COLE_H
#define COLE_H
#include <QDialog>
#include "mainwindow.h"
namespace Ui
class COLE;
class COLE : public QDialog , public Ui::MainWindow
Q_OBJECT
public:
explicit COLE(QWidget *parent = 0);
~COLE();
private slots:
void on_pushButton_clicked();
public:
double var1;
private:
Ui::COLE *ui;
;
#endif // COLE_H
我知道问题来自“public Ui::MainWindow”,但我确信应该是这样。我检查了我的班级名称,它是 MainWindow。
请帮忙。
【问题讨论】:
你在 Ui 命名空间中真的有其他 COLE 吗? 你可能需要#include "ui_mainwindow.h" 等一下。是否需要“, public Ui::MainWindow”? 这里的重要问题是:你想通过继承Ui::MainWindow
来实现什么?
我总是使用多重公共继承方法,所以我没有注意到私有“Ui::COLE *ui”部分.. OP 不应该同时使用这两种方法。
【参考方案1】:
您似乎遇到了两个问题。
1) 您应该包含ui_mainwindow.h
而不是mainwindow.h
,因为通常这是 UI 编译器(即 uic)默认生成的内容,除非您明确更改它。我会假设这里不是这种情况,因为这通常是不必要的。
至于第二个问题,您可以通过两种不同的方式使其工作:
2a) Single inheritance approach:简而言之,这样,您使用组合而不是从 UI 类继承。所以,如果你选择这样做,你将只需要指针成员而不是继承 ui 类。
2b) Multiple inheritance approach: 简而言之,这种方式,你使用多重继承,正如它的名字所说,而不是组合。你不用这种方式使用指针成员,而是从 ui 类私下继承。
目前,您似乎对上述两种情况进行了错误的混合处理。尝试坚持其中之一。
【讨论】:
以上是关于“”之前的预期类名的主要内容,如果未能解决你的问题,请参考以下文章