Qt两个类互相访问

时间:2017-12-08 16:08:31

标签: c++ qt class

我们说我的Class A继承自QMainWindowClass B。代码是这样的:

a.h

#ifndef A_H
#define A_H

#include <QMainWindow>
#include "b.h"

class A : public QMainWindow
{
    Q_OBJECT

public:
    A(QWidget *parent = 0);
    ~A();

    B TestingB;

    int tryingNumA = 0;
    void getNumB() {
        qDebug() << TestingB.tryingNumB; //worked
    }
};

#endif // A_H

b.h

#ifndef B_H
#define B_H

#include <QDebug>

class A;

class B
{
public:
    B();

    int tryingNumB = 1;

    A *testingA;
    void getNumA() {
        qDebug() << testingA->tryingNumA; //did not work, error: invalid use of incomplete type 'class A'
    }
};

#endif // B_H

Class B中很容易获得Class A个元素,但我也想在Class A中获得Class B个元素(我想要这两个Class可以互相访问),我试过的代码不起作用。这是因为Class A继承自QMainWindow吗?因为 为了实现这一目标,我该怎么办?
感谢。

1 个答案:

答案 0 :(得分:1)

尝试将B::getNumA()移至实施文件。因此你会有像

这样的东西
// b.cpp
#include "b.h"
#include "a.h"

 void b::getNumA() {
    qDebug() << testingA->tryingNumA; //did not work, error: invalid use of incomplete type 'class A'
}

目标是打破标题之间的循环依赖。