我们说我的Class A
继承自QMainWindow
和Class 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
吗?因为
为了实现这一目标,我该怎么办?
感谢。
答案 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'
}
目标是打破标题之间的循环依赖。