gpt4 book ai didi

c++ - 声明类类型的 QVector 时出错

转载 作者:行者123 更新时间:2023-11-27 23:58:22 24 4
gpt4 key购买 nike

在 Qt 中声明类类型的 QVector 时出错。

错误:“不允许不完整的类型”

我不明白是什么导致了这个错误。

如果我在 main.cpp 中#include "storage.h"并声明一个类存储的 Qvector 它工作正常但是当我在波形类中做同样的事情时它报告一个错误。

我已经尝试在波形类中向前声明存储类,但仍然遇到相同的错误。

有什么帮助吗??

主要.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()
{

}

波形.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

波形.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()
{

}

存储.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

存储.cpp

#include "storage.h"

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

}

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

}

storage::storage()
{

}

storage::~storage()
{

}

最佳答案

您需要在必要的文件(我相信 waveform.h)中显式包含 QVector,因为 QT 使用了很多前向声明,虽然它们在 IDE 中显示为正确的类,但它们不会编译, 如果文件中没有包含正确的定义。

关于c++ - 声明类类型的 QVector 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com