2016-12-01 3 views
0

Qt에서 클래스 유형의 QVector를 선언하는 중에 오류가 발생합니다.클래스 유형의 QVector를 선언하는 중 오류가 발생했습니다.

오류 :

나는이 오류의 원인을 이해하지 못했다 "불완전한 유형이 허용되지 않습니다."

main.cpp에서 "storage.h"를 포함하고 storeage 클래스의 Qvector를 선언하면 제대로 작동하지만 파형 클래스에서 동일한 작업을 수행하면 오류가보고됩니다.

나는 파형 클래스에서 저장소 클래스를 선언했지만 여전히 동일한 오류가 발생했습니다.

도움말?

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 

명시 적으로 필요한 파일에 QVector을 포함 할 필요가
#include "storage.h" 

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

} 

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

} 

storage::storage() 
{ 

} 

storage::~storage() 
{ 

} 

답변

3

이 (waveform.hi 믿는) storage.cpp, QT 이후 IDE에서 올바른 클래스로 표시되지만 많은 정방향 선언을 사용하지만 적절한 정의가 파일에 포함되어 있지 않으면 컴파일되지 않습니다.

+0

오오 .. 어리석은 실수. 감사 – secretgenes