在C++中,习惯声明和定义分开,也就是经常出现一个Class对应两个文件,一个.h,一个.cpp。当我们面对多个类设计的时候,文件include可能需要注意。我对此没太多经验,因此吃了点亏。自己总结一点点经验:

1、MyClass.h
此文件只放置与MyClass有关的声明,而不放置任何MyClass中可能用到的类的声明,或者其它.h的引入。

在MyClass.h的首部添加
#pragma once

或者在文件首尾的地方添加
#ifndef _XXXXXX_H_
#define _XXXXXX_H_

....

#endif

用以确保声明只被#include一次。

2.MyClass.cpp

每个Class.cpp的首部include部分,分为2部分。
第一部分是整个类库的.h的include;第二部分是该类自身除了整个类库的.h之外还额外需要的类库的include。

// Public Part
#include "MyClassLibCommon.h"

// Private Part
#include "MyClassBase1.h"
#include "MyClassBase2.h"
#include <fstream>

3.MyClassLibCommon.h

这个文件放置整个类库公共的声明部分,和一些大家都有可能用到的系统库。
#include <iostream>
#include <string>
#include <winsock2.h>

#pragma comment(lib,"wsock32")

using namespace std;

typedef unsigned int dword;
typedef unsigned short word;
typedef unsigned char byte;

4. MyClassLib.h
这个文件是为了外部程序引用方便而设置的。其中引用了库内所有的类。
// 第一部分
#include "MyClassLibCommon.h"
// 第二部分
#include "MyClass.h"
#include "MyClassBase1.h"
#include "MyClass2.h"

5. App.cpp
在这个文件中指需要include一个MyClassLib.h文件即可。整个Project就可以编译了。