2013-07-15 40 views
2

为了让一些代码更易于阅读,我将它分割成多个文件。其中一个文件只包含2个初始化方法。值得用这些方法的声明来创建一个.h,包括那个,或者我应该直接包含.cpp,只有两种方法,是否值得符合标准?我应该总是将我的文件分割成声明(.h)和定义(.cpp)

+11

**永远不要包含.cpp文件。决不。无论如何。** – 2013-07-15 20:23:30

+0

@ H2CO3够了。为什么不,我已经看到它在一些例子中完成了? (不是说它是正确的,只是寻找解释为什么它不是)。 – w4etwetewtwet

+0

'ld:体系结构x86_64的1个重复符号' – 2013-07-15 20:26:36

回答

3

你不应该包括CPP文件,不管几个定义如何在其中:包括在其他几个cpp文件会产生重复的符号每个定义,导致链接错误。

如果你建立了在多个翻译单位使用(这是一个奇特的名字为cpp文件),你应该建立一个标题为它的类。模板没有cpp文件 - 只需要一个头文件。

虽然通常的做法是让一个CPP /头对每一类,它是确定包括在一个翻译单元的多个相关的类,并把所有的声明在一个头。

+0

Thankyou,我会尽快接受。 – w4etwetewtwet

+0

编译器不会阻止您在标题中添加多个相关类,但要小心!我有一个项目对我来说变得非常大,最终发现很难找到与数学库有关的类。即使它们都是相关的,如果我实际上将它们分开并保持1:1标题/翻译单元范例,我将花更少的时间来搜索事物。 –

+0

@DJPeterson我同意,在一个标题中粘贴多个类应该是一个例外,而不是一个规则。关于唯一一次我认为是紧密耦合项目的“集群”的类,例如一个类和它的“朋友”比较器。这种情况在C++ 11中应该会少一些。 – dasblinkenlight

1

A .cpp包含的文件错误的.h文件。

.cpp.h是对程序员(以及偶尔在工具链中使用的工具)有意义的扩展。如果你开始使用.cpp文件,即使你说服你的工具链如何处理它,你也会迷惑其他程序员(包括你自己在几个月/几年)。

创建报头文件只设置的工具或功能有时可以接受的。调用该文件.cpp不是。

相关问题