本来没这么关注这个问题,但是今天应用两个类之间互调,发现出现死循环显现,就是传说中的泥中有我我中有你,都是预编译搞的鬼,一旦加入#include然后两个类就是开始我
把你的源代码复制过来,你又把我得源代码复制过来,当然vc不会这么干了,他会给报错,说其中一个类为定义。
解决这个问题之前,要先说一下这个声明和定义分开的问题,就是实现和接口分离问题,这是我的简单理解,欢迎提意见。
简单来说就是类中函数不内联,这样才能在此基础上用一个简单的方法处理互调问题。而且相对来说就VC来说,这样的话就可以对每个一个类做编译,精细化处理错误。不用等全部编译完成在同一编译,(当然对比较牛的人来说,出错率基本为0的就不说了)小工程还好说,百十个问题而已,如果是特大工程呢,那就满屏幕都是错误。如此来说对新手好出还是蛮多的。
接下来就是处理,可以在头文件中先声明要调用的类,或者函数,这样编译头文件的时候就可以通过编译,然后呢,在具体实现中加入需要预编译的头文件名称,OK就能通过。
当然主要针对的还是指针类型的,访问回调,这才是真正的大环境,在他的基础上用面的操作才能实现,如果是实际类对象,那么不好意思,我这还没有研究完。
原文链接:https://www.f2er.com/javaschema/285883.html