如何解决C ++包含循环不能使用前向声明
我想从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中的这一行,您不仅需要“它是一个类”,还需要由前向声明提供的信息。
即在此文件中,您需要额外的
#include "B.h"
与B.cpp类似,它需要为包含的代码包括A.h。 (谢谢,谢夫。)
而且,至少如果仅查看显示的代码,则实际上不需要在A.cpp中包括A.h。如果您添加了看似缺失的A::
,而实际文件的其余部分很可能需要它,则这种情况已经改变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。