2013-12-26 7 views
2

ну, я новичок в 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 

Я знаю, что проблема исходить от «общественного Ui :: MainWindow ", но я уверен, что так оно и должно быть. Я проверяю имя моего класса, и это MainWindow.

Пожалуйста, помогите.

+0

У вас действительно есть еще один КОЛ в пространстве имен Ui? – drescherjm

+0

Почему у вас есть два типа COLE? Покажите mainwindow.h, пожалуйста. Обычно это ui_mainwindow.h, поэтому вы создали его вручную, чтобы быть другим? – lpapp

+1

Возможно, вам нужно включить #include "ui_mainwindow.h" – drescherjm

ответ

6

У вас, кажется, две проблемы.

1) Вы должны включать ui_mainwindow.h, а не mainwindow.h, как обычно это то, что генерируется по умолчанию компилятором UI (то есть uic), если вы не измените его явно. Я предполагаю, что здесь не так, поскольку это обычно не требуется.

Что касается второго вопроса, то вы можете заставить его работать двумя различными способами:

2а) Single inheritance approach: Короче говоря, таким образом, можно использовать композицию, а не наследование от класса UI. Итак, если вы решите сделать это таким образом, вам понадобится только элемент указателя, а не наследование класса ui.

2b) Multiple inheritance approach: Короче говоря, вы используете множественное наследование, поскольку его имя говорит, а не композиция. Вы не используете элемент указателя таким образом, но в частном порядке наследуете класс ui.

В настоящее время у вас, кажется, неправильный смешанный подход к двум вышеупомянутым случаям. Постарайтесь придерживаться одного из них.

Смежные вопросы