假设我有两个类:A
和 B
;一个头文件 myheader.h
:
....
class A{
public:
void display(B* c);
};
class B{
public:
void display(A* c);
};
.....
编译器报错:'B'未被声明(在A::display中)这是预料中的。
于是我为A
和B
编写了两个分离的头文件:aheader.h
(包括类A的定义)和bheader.h
(包括类B);
在aheader.h
中:
#include "bheader.h"
在 bheader.h 文件中:
#include "aheader.h"
进展顺利。
但是当我开始编写implementation.cpp
时,问题就出现了:
#include "aheader.h"
#include "bheader.h"
void A::display(B* c){}
void B::display(A* c){}
现在,在B::display中 A'尚未被声明。
不知道如何简要描述这个问题。
我正在使用Ubuntu14,Eclipse CDT,Linux GCC和Gnu Makd Builder。
我是C++的新手,我猜想这个问题发生在链接时。我真的希望有人能给我一个解释或解决方案。谢谢!