为了减少c++文件的编译依赖,前置声明经常使用,特别是在头文件中,如果不是必要,对于class基本都使用前置声明,而不是直接#include。

今天遇到一个问题,需要在某类的头文件里面引用到另外一个“类”,因此自然使用了前置声明,但是居然编译不过,显示定义冲突。

查了一下,原来被引用的“类”其实不是一个类,而是一个struct的typedef,非常老套的c写法:


typedef struct _foo

{

}foo;


查了一下,对于typedef根本没有办法前置声明。无论是class还是struct都不行。

更多推荐