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::
并且实际文件的其余部分很可能需要它,这已经改变了。
我想做这样的事情,运行 来自 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::
并且实际文件的其余部分很可能需要它,这已经改变了。