pank Asked:2020-03-14 16:36:44 +0000 UTC2020-03-14 16:36:44 +0000 UTC 2020-03-14 16:36:44 +0000 UTC 在什么情况下,完全在头文件中实现的类会导致错误? 772 我有好几次遇到这样的情况,当一个类在头文件中完全实现时,在执行过程中导致错误。 但是一旦类被分成两个文件.h,.cpp错误就会立即消失。 试图专门重现这样的错误,但到目前为止还没有奏效。 什么会导致此类错误? c++ 1 个回答 Voted Best Answer Илья Чижанов 2020-03-14T17:08:43Z2020-03-14T17:08:43Z 正如@Harry 所说,第一个错误是多重定义。这些标头中的全局变量导致了最大的问题。此外,问题将是函数的定义不在声明中。在这种情况下,问题不会立即出现,而是一旦此标头包含在多个文件中。但可能发生的最令人恼火的错误是递归包含。看起来“好吧,我不是傻瓜,我不会将文件包含到已经包含该文件的文件中”,但是没有必要直接进行递归包含。这会生成一个前向声明,并且很难找到这个递归。 在头文件中实现类不是一个好主意,除非它是模板或文件是由某种工具生成的。
正如@Harry 所说,第一个错误是多重定义。这些标头中的全局变量导致了最大的问题。此外,问题将是函数的定义不在声明中。在这种情况下,问题不会立即出现,而是一旦此标头包含在多个文件中。但可能发生的最令人恼火的错误是递归包含。看起来“好吧,我不是傻瓜,我不会将文件包含到已经包含该文件的文件中”,但是没有必要直接进行递归包含。这会生成一个前向声明,并且很难找到这个递归。
在头文件中实现类不是一个好主意,除非它是模板或文件是由某种工具生成的。