我创建了基类-MainWindow。在该类中,我创建另一个类“ SecondWindow”的对象。通过使用SecondWindow的对象,我想使用基类中定义的function()方法。我怎样才能做到这一点?

我试图将我的基类作为参数传递给SecondWindow对象,但这没有用(可能是因为在MainWindow中我包含了“ secondWindow.h”,在SecondWindow中我试图包含了“ mainwindow.h”头文件)。有没有办法简单地使用基类的函数/变量?

主窗口

#include<QMainWindow>
#include "secondwindow.h"
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();
    SecondWindow *secondWindow;
    void function();
}


主窗口

#include "mainwindow.h"
MainWindow::MainWindow()
{
    secondWindow = new secondWindow();
    function();
}
void MainWindow::function()
{
    qDebug()<<"yes";
}


第二窗口

class SecondWindow : public QMainWindow
{
    Q_OBJECT
public:
    SecondWindow();

}


secondwindow.cpp

#include "secondwindow.h"

SecondWindow::SecondWindow()
{
//here I want to use function();
}

最佳答案

您可能想要继承MainWindow类,然后再继承QMainWindow()

因此,在secondwindow.h中,您将进行更改

class SecondWindow : public QMainWindow
{
    Q_OBJECT
public:
    SecondWindow();

};




#include "mainwindow.h"
class SecondWindow : public MainWindow
{
    Q_OBJECT
public:
    SecondWindow();

};


然后,您将可以在secondwindow.cpp中使用function()

同样,您还有另一个问题,那就是您的主窗口使用了指向第二个窗口的指针,但是您将遇到一个循环依赖问题。 (您需要SecondWindow才能编译MainWindow,但是,您希望SecondWindow能够使用function())。

若要解决此问题,您需要在MainWindow类中向前声明SecondWindow。

在mainwindow.h中,删除#include "secondwindow.h"并将其替换为class SecondWindow;

关于c++ - Qt:如何将基类转移到该类中创建的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47437397/

10-10 12:38