1.最近刚好在写一个由java程序改写成c++的程序,其中类定义较多,改写成多个文件后,很多问题就暴露出来了,然后编译器就会出现各种的莫名不讲道理的错误,开始笔者以为编译器没反应过来,给他点时间吧。。好久了还是这样,多次尝试后笔者发现是头文件循环依赖造成的。大概是这么个样子,看图。 简单一点可以看出来A,B头文件的互相包含,远一点就会发现A,D的互相包含。 2.其实不用自己找这种依赖关系的,很难找,还无聊,我想说的是visual studio本来就有这样的功能。 3.怎么解决呢,参照c++ class互相包含的经验,是一个类在另外一个中为指针或引用变量,这些我不想说了,笔者采用简单直接的办法,把引起互相包含的部分拿出来,写成另外一个文件,就避免了这些问题,毕竟循环依赖是我不想看的。当然了,我这个程序中这样做是比较优雅的,如果增加中间件不能解决的话,还是要参照我提了一点的那个办法,不是重点,不细说了。