C++ 使用包含该类的其他类中的函数
好吧,我完全迷路了 我有两个类,mainwindow.cpp和settings.cpp。两者都使用另一个的函数。所以我试着让每一个包含另一个,但这导致了一个包含循环。所以我不得不使用转发声明。但是,这些导致了错误:转发“类设置”声明 这是我现在的代码: mainwindow.h:C++ 使用包含该类的其他类中的函数,c++,qt,C++,Qt,好吧,我完全迷路了 我有两个类,mainwindow.cpp和settings.cpp。两者都使用另一个的函数。所以我试着让每一个包含另一个,但这导致了一个包含循环。所以我不得不使用转发声明。但是,这些导致了错误:转发“类设置”声明 这是我现在的代码: mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H class Settings; namespace Ui { class MainWindow; } class Mai
#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
}
设置。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";
}
那么,有人能就如何做到这一点提供一些指导吗?提前谢谢 您缺少一个include,并且有一个不需要的转发声明。如果您将include添加到mainwindow.h(
#include“settings.h”
)并在设置标题中向前声明mainwindow类,这应该可以正常工作。您需要在mainwindow.cpp中包含“settings.h”,在settings.cpp中包含“mainwindow.h”
阅读定义和定义的区别。我没有看到任何包含?是的,这是我试图使用正向声明,但它不起作用。我需要知道如何正确地做到这一点(两个类使用彼此的函数)。@Deduplicator这是Qt生成的。(Qt有点像GUI框架)。我试过了,但出现了以下错误:无效使用不完整的类型“class MainWindow”QTreeWidgetItem*status=window->setStatus(“添加游戏\”“+gameName+”,“状态”)^