2017-04-24 37 views
0

我在Qt中遇到了兩個錯誤,希望您能幫助我解決這個問題。這是我第一次發佈內容,請我幫忙。這是代碼:在「*」令牌和MainWindow未命名類型之前Qt [expected「)」中的錯誤]

#include <QMainWindow> 
#include "mainwindow.h" 
#include <QThread> 
#include <QtCore> 
#include "ui_mainwindow.h" 

class HiloPrincipal : public QThread 
{ 
    Q_OBJECT 

public: 

    explicit HiloPrincipal(MainWindow* parent = 0); // First error 


    MainWindow * _parent; // Second error 

    void run(); // Sacar Botella y poner botella. 


signals: 

public slots: 

}; 
#endif // HILOS_H 
+0

除了顯示完整的錯誤之外,您可以顯示代碼的更多信息。 – eyllanesc

+1

請參見:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) – MrEricSir

+1

發佈'mainwindow.h'的相關內容。它似乎有一個缺少聲明(可能是一個名稱錯字,或者你忘了包含一個頭文件)。 – cbuchart

回答

0

我幾乎肯定你已經創建了包含循環。 修復它是這樣的:

#ifndef HILOS_H // this was missing! Probably when you did copy paste to question 
#define HILOS_H 

#include <QMainWindow> 
// remove line: #include "mainwindow.h" 
#include <QThread> 
#include <QtCore> 
// remove line: #include "ui_mainwindow.h" 

// forward declaration 
class MainWindow; 

class HiloPrincipal : public QThread 
{ 
    Q_OBJECT 

public: 

    explicit HiloPrincipal(MainWindow* parent = 0); // First error 


    MainWindow * _parent; // Second error 

    void run(); // Sacar Botella y poner botella. 


signals: 

public slots: 

}; 
#endif // HILOS_H 

不是包含此標頭文件中HiloPrincipal.cppmainwindow.h。這應該解決構建問題,但不是實際問題。

注意問題是由無效的類設計引起的。您的HiloPrincipal線程不應該有關於MainWindow的任何知識。

另外you're doing that wrong - 這是QThread的無效使用。

+0

請注意[你並沒有這麼做。](https://woboq.com/blog/qthread-you-were-not-doing-so-wrong.html)。子類化QThread是有效的,如果你沒有使用它的事件機制來與QObjects –

+0

進行通信是有效的,但是會產生更復雜的問題,所以建議不要這樣做。當使用組合而不是子類化時,有許多優點,但這是一個關於這個問題的大問題。 –

+0

的確,它太寬泛了。但通常不鼓勵QThread的子類是錯誤的 - 我只是想指出。 –