为了减少c++文件的编译依赖,前置声明经常使用,特别是在头文件中,如果不是必要,对于class基本都使用前置声明,而不是直接#include。
今天遇到一个问题,需要在某类的头文件里面引用到另外一个“类”,因此自然使用了前置声明,但是居然编译不过,显示定义冲突。
查了一下,原来被引用的“类”其实不是一个类,而是一个struct的typedef,非常老套的c写法:
typedef struct _foo
{
}foo;
查了一下,对于typedef根本没有办法前置声明。无论是class还是struct都不行。