- 论坛徽章:
- 0
|
我原来遇到过这样的问题,我想对于学习c++的同学来说,这个问题是很长见和不知道该如何解决的:
- //test1.h
- class CTest1
- {
- public:
- CTest1();
- virtual ~CTest1();
- CTest2 mm;
- };
- //test2.h
- class CTest2
- {
- public:
- CTest2();
- virtual ~CTest2();
- CTest1 mm;
- };
复制代码
如何将它们编译过去了??类CTest2用到了CTest1,CTest1用到了CTest2。
不管你怎么做,你都是编译不过去的。为什么了?
在编译Test2.cpp的时候,因为CTest2中又CTest1的成员变量,那编译器就要得到CTest1的内存结构,那就要#include “Test1.h",但是相应的Test1.h要include ”Test2.h",这样就导致了.h的重复包含,那是不行的,那当如何做了。
当将mm的类型改为CTest1×(CTest2×),再在头文件中加入对于CTest1(CTest2×)的声明,class CTest1,因为改为了指针,指针都是4个字节,那编译器就能将内存结构确定下来,那就Ok了,可以编译过去了。
不知道这个东西对于大家又没有帮助,好久没有再c版发贴了,希望有用。 |
|