最近在Coursea上Algorithm课学习,顺便自己也实现一下。建立了很多的头文件也遇到了一些问题,下面记录一下我的心得。
-
首先很重要的一点
-
因为头文件很多,你可能会在文件开头引用别的很多头文件,而这些头文件之间也有复杂的引用串联关系,容易引起混乱。特别是,如果你经常使用VS,你要了解这个宇宙第一IDE的工程特点,从源码如何一步步到目标代码(-o),再通过链接生成可执行代码的过程。(编译一般检查语法问题,链接上更容易出问题)。
-
我的建议是每个头文件都加上 #pragma once的注释,这样后面就很省心了。很好的解决了多头文件之间的依赖。
-
-
其次,.h和.cpp文件分开
- 你可能要问为什么?我也是摸索过来的。
- 如果你没有分开,有些方法的实现写在了.h文件内部就会报下面这种错误。
Dijsktra.obj : error LNK2005: "public: __thiscall DirectedEdge::DirectedEdge(void)" (??0DirectedEdge@@QAE@XZ) 已经在 DAG.obj 中定义
1>Dijsktra.obj : error LNK2005: "public: __thiscall DirectedEdge::~DirectedEdge(void)" (??1DirectedEdge@@QAE@XZ) 已经在 DAG.obj 中定义
1>Dijsktra.obj : error LNK2005: "public: int __thiscall DirectedEdge::getFrom(void)" (?getFrom@DirectedEdge@@QAEHXZ) 已经在 DAG