【发布时间】:2021-09-28 15:28:08
【问题描述】:
如何解决这种对不完整类型“类窗口”的无效使用?即使使用前向声明仍然错误。我需要在任何地方使用类窗口。原因,渲染窗口将根据情况随机。 Window 类有 render 方法。
#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();
}
【问题讨论】:
-
Window* wnd = new Window;不能在没有看到完整的类定义的情况下完成。将该代码移动到单独的实现文件中。