“”之前的预期类名

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 类私下继承。

目前,您似乎对上述两种情况进行了错误的混合处理。尝试坚持其中之一。

【讨论】:

以上是关于“”之前的预期类名的主要内容,如果未能解决你的问题,请参考以下文章

C++:错误:“”标记之前的预期类名

非常基本的继承:错误:“”标记之前的预期类名

令牌SDL错误之前的预期类名[关闭]

src/walletdb.h:96:1:错误:“”令牌之前的预期类名

C ++错误:“类名”之前的预期类型说明符[重复]

nodejs的c ++插件中的预期类名