java转c++了,说不清的痛苦,然后写代码遇到一个问题,特来总结一下。
比如有两个类,A和B,A要引用B,B也要引用A。但是如果同时在头文件里面包含对方,就会发生编译错误。
比如写成
//A.h
#include"B.h"
class A{
B b;
};
//b.h
#include"A.h"
class B{
A a;
};
解决方案,只需要在一个头文件中声明即可。
//A.h
class B; //注意在这里声明
class A{
void fun(B b);
};
//A.cpp
#include"B.h" //注意在这里引用
#include"A.h"
void A::fun(B b){
}
//B.h
#include"A.h"
class B{
void ok(A a);
};
//B.cpp
#include"B.h"
void B::ok(A a){
}