如何修复不完整类型'class Window'的无效使用?即使用前向声明仍然错误。我需要使用类窗口无处不在。因为,渲染窗口将随机依赖于情况。窗口类有渲染方法。
#include <QApplication>
#include <QWidget>
class Window;
class MainWindow;
class DashBoardWindow: public QWidget
{
public:
DashBoardWindow()
{
this->setWindowTitle("Dashboard");
}
};
class MainWindow: public QWidget
{
public:
MainWindow()
{
this->setWindowTitle("MainWindow");
DashBoardWindow* dash = new DashBoardWindow;
Window* wnd = new Window;
wnd->render(dash, this);
}
};
class Window
{
public:
void render(QWidget* widget, QWidget* parent = nullptr)
{
if(parent == nullptr){ widget->show(); }
else{
widget->show();
parent->close();
delete this;
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow* mainWnd = new MainWindow;
Window* wnd = new Window;
wnd->render(mainWnd);
return app.exec();
}
前向声明是不完整的定义。您要么需要将windows的完整定义移动到使用它的代码上方,要么需要将其移动到单独的头文件中并包含它(#include "Window.h"
)