2016-12-01 8 views
0

Erreur lors de la déclaration de QVector de type classe dans Qt.Erreur lors de la déclaration de QVector du type de classe

Erreur: « type incomplet n'est pas autorisé »

Je ne comprenais pas ce qui cause cette erreur. Si # #include "storage.h" dans main.cpp et déclare un Qvector de storeage de classe cela fonctionne bien mais quand je fais la même chose dans la classe de forme d'onde il signale une erreur.

J'ai essayé de déclarer la classe de stockage dans la classe de forme d'onde mais toujours la même erreur.

Une aide?

main.cpp

#include "test_subject_02.h" 
#include <QtGui/QApplication> 


int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    TEST_SUBJECT_02 w; 
    w.show(); 
    return a.exec(); 
} 

test_subject_02.h

#ifndef TEST_SUBJECT_02_H 
#define TEST_SUBJECT_02_H 

#include <QtGui/QMainWindow> 
#include "ui_test_subject_02.h" 
#include"waveform.h" 
#include "storage.h" 


class TEST_SUBJECT_02 : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    TEST_SUBJECT_02(QWidget *parent = 0, Qt::WFlags flags = 0); 
    waveform *wv; 
    ~TEST_SUBJECT_02(); 

private: 
    Ui::TEST_SUBJECT_02Class ui; 
}; 

#endif // TEST_SUBJECT_02_H 

test_subject_02.cpp

#include "test_subject_02.h" 

TEST_SUBJECT_02::TEST_SUBJECT_02(QWidget *parent, Qt::WFlags flags) 
    : QMainWindow(parent, flags) 
{ 
    ui.setupUi(this); 
    QVector<storage> ser; //works fine here 
    wv->readfile("e:/testing2/result/3/abc.cur"); 

} 

TEST_SUBJECT_02::~TEST_SUBJECT_02() 
{ 

} 

waveform.h

#ifndef WAVEFORM_H 
#define WAVEFORM_H 

#include "storage.h" 
#include <QObject> 

class waveform : public QObject 
{ 
    Q_OBJECT 


public: 
    waveform(QObject *parent=0); 
    void readfile(QString); 

    QVector <storage> myvector ; // incomplete type is not allowed 
    ~waveform(); 

private: 

}; 

#endif // WAVEFORM_H 

waveform.cpp

#include "waveform.h" 

waveform::waveform(QObject *parent) 
    : QObject(parent) 
{ 

} 

void waveform::readfile(QString file) 
{ 
    QVector<storage> sw; //again error incomplete type is not allowed 

} 

waveform::~waveform() 
{ 

} 

storage.h

#ifndef STORAGE_H 
#define STORAGE_H 

#include <QObject> 

class storage : public QObject 
{ 
    Q_OBJECT 

public: 
    storage(QObject *parent); 
    storage(); 
    storage(QString,QString); 
    ~storage(); 

private: 
    QString x; 
    QString y; 

}; 

#endif // STORAGE_H 

storage.cpp

#include "storage.h" 

storage::storage(QObject *parent) 
    : QObject(parent) 
{ 

} 

storage::storage(QString xcord,QString ycord) 
{ 
    x=xcord; 
    y=ycord; 

} 

storage::storage() 
{ 

} 

storage::~storage() 
{ 

} 

Répondre

3

Vous devez inclure explicitement QVector dans le fichier nécessaire (waveform.hi croire), depuis l'intervalle QT utilise beaucoup de déclarations anticipées, alors qu'elles apparaissent comme des classes correctes dans l'EDI, mais elles ne compileront pas, si la définition correcte n'est pas incluse dans le fichier.

+0

ohh .. cette erreur stupide. Merci – secretgenes