C++ 包含循环。不能使用前向声明

C++ include loop. Can't use forward declarations

我想做这样的事情,运行 来自 main():

Main.cpp

#include "A.h"
#include "B.h"
int main(){
    A* a = new A();
    B* b = new B(a);
    b->render();
    return 0;

A.h

class B;
class A {
public:
    void renderObject(B* b);
}

A.cpp

#include "A.h"
void renderObject(B* b) {
    int* data = b->data;
    //do something with data

B.h

class A;
class B {
public:
    A* a;
    B(A* a);
    int* data;
    void render();
}

B.cpp

#include "B.h"
B(A* a) {
    this->a = a;
    //something that write stuff to data.
}
void render() {
    a->renderObject(this);
}

这种编码方式可行吗?我该怎么做才能使两者都可以引用?

对于 A.cpp 中的这一行,您需要的不仅仅是“它是一个 class”,前向声明提供的信息。
IE。在这个文件中你需要一个额外的

#include "B.h"

类似于B.cpp,需要包含A.h来包含代码。 (谢谢,谢夫。)

而且,至少如果只看显示的代码,您实际上不需要在 A.cpp 中包含 A.h。如果您添加看似缺失的 A:: 并且实际文件的其余部分很可能需要它,这已经改变了。