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

被折叠的 条评论
为什么被折叠?



