include "*.h" 和 declare class *; 的区别?

刚才遇到个很奇怪的问题,到现在还没想明白,来这里记录一下。

在A.h中定义了一个类ClassA,然后在B.h中有使用这个类。使用方式为:

#include "A.h"
Class B {
  void foo(ClassA* A);
};
然后编译的时候居然告诉我不认识ClassA这货。搞的我上下折腾了好久。


后来居然在B.h中添加了ClassA的声明: 

ClassA;

就好了。


到现在还是百思不解。

按理说应该是 #include 的功能比 Declaration 的功能强才对啊。

谁路过这里,顺便帮我解释一下~

Tks~



原文地址:https://www.cnblogs.com/bouygues/p/4480001.html