好吧,我完全失去了这里。使用来自其他课程的功能,其中包括此类
我有两个类,mainwindow.cpp和settings.cpp。两者都使用另一个的功能。所以我试图让每个包含另一个,但是这导致了一个包含循环。所以我不得不使用前向声明。但是,这些导致错误:“类设置”的前向声明。
这是我现在的代码:
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
class Settings;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void someFunction();
private:
Ui::MainWindow *ui;
Settings *settings;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
QTreeWidgetItem* status;
QString setting = settings->getSomeSetting();
}
MainWindow::~MainWindow() {
delete ui;
}
void someFunction() {
// DO STUFF
}
settings.h:
#ifndef SETTINGS_H
#define SETTINGS_H
class MainWindow;
class Settings : public QSettings {
public:
Settings();
QString getSomeSetting();
private:
MainWindow *mainwindow;
};
#endif // SETTINGS_H
settings.cpp :
#include "settings.h"
Settings::Settings() : QSettings(qApp->applicationDirPath() + "/settings.ini", QSettings::IniFormat) {
}
QString Settings::getSomeSetting() {
mainwindow->someFunction();
return "somesetting";
}
所以,任何人都可以提供一些指导如何做到这一点?提前致谢!
我没有看到任何包含? – 2014-09-20 20:07:19
是的,这是我试图使用前瞻性声明,但它不工作。我需要知道如何正确地做到这一点(两个类使用其他功能)。 – Qub1 2014-09-20 20:11:09
@Deduplicator这是Qt生成的东西。 (Qt就像一个GUI框架)。 – Qub1 2014-09-20 20:12:36