2016-12-01 11 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 
あなたが明示的にQTいるので、必要なファイル(waveform.hiは信じて)で QVectorを含める必要が

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() 
{ 

} 

答えて

3

多くの前方宣言を使用しますが、IDEでは正しいクラスとして表示されますが、適切な定義がファイルに含まれていない場合はコンパイルされません。

+0

オハイオ州。その愚かな間違い。ありがとう – secretgenes

関連する問題