嵌套类模块化问题
前言
之前的模块化是编译成.lib。在单文件下还好,多文件下还是有点问题。
正文
1 |
|
1 |
|
1 |
|
发现编译器提示使用一个不完整的类。
但是当他们都写在.cpp源文件的时候反而不报错。
显然是头文件之间出现了问题。因为两个头文件相互引用,而预编译阶段就是展开头文件。
所以当互相调用的时候,就不能确定先展开谁,因为无论先展开谁,都会有一个缺失了,导致类不完整。
当追究主次的时候,我们知道,Hack肯定先声明,Weapon可以后声明,也就是说Hack.h不是必要引用Weapon.h的。
谁想用就让谁引用,这里自然是.cpp源文件要引用。
所以修改Hack.h头文件
1 |
|
回头看声明是合法的。没有报错了。
就跟先有鸡还是先有蛋相似。。都是逻辑问题。没什么好硬扯的。
结语
聪明的大宝贝还能用#ifdef
之类的去判重。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Box'Blog!
评论