多个文件嵌套include,尽量把include写在CPP里面,否则有可能导致各种嵌套包含导致的问题。
比如
define.h:
struct Order{
wstring order_no;
wstring name;
float price;
}
head.h:
#include "windows.h"
#include "duilib.h"
#include <string>
using namespace std;
//一些结构体和数据类型
#include "define.h"
//需要有用的逻辑代码文件
#include "InstantMsgMgr.h"
#include "Config.h"
OrderMgr.h:
#include "head.h"
InstantMsgMgr.h:
#include "head.h"
#include "OrderMgr.h"
class CInstantMsgMgr{
COrderMgr order_mgr_;
}
这样编译的时候 就会提示order_mgr_前面未声明定义什么的错误,就是没有识别到COrderMgr类。
如果我们把所有的#include "head.h" 都放到cpp中,就完美解决了。
define.h 和 head.h不需要改动,
把逻辑代码文件改动一下#include位置就行了
比如
OrderMgr.h:
#include "windows.h"
#include <string>
using namespace std;
#include "define.h"
OrderMgr.cpp:
#include "OrderMgr.h"
#include "head.h"
InstantMsgMgr.h:
#include "windows.h"
#include <string>
using namespace std;
#include "define.h"
#include "OrderMgr.h"
class CInstantMsgMgr{
COrderMgr order_mgr_;
}
InstantMsgMgr.cpp:
#include "InstantMsgMgr.h"
#include "head.h"
这样编译 就毫无问题了。避免了head和逻辑代码文件也被嵌套使用,导致的错误