情景:
.hpp文件在测试时一切正常,包含进工程中导致多个文件包含该头文件,出现命名空间中的函数重复定义的问题。即使存在#pragma once也没有用。
原因:
头文件不应该含有任何“具有链接性的实体”。不应该有函数体,和变量的定义。否则每次包含该头文件时,都相当于把代码复制粘贴了一遍,自然造成了重复定义。
解决方法:
函数老老实实在.h文件中声明,在.cpp文件中定义。另外,还需要注意,命名空间中不能定义变量。
参考链接:
命名空间namespace ,以及重复定义的问题解析_自己定义的namespace为什么会re_晴树SEU的博客-CSDN博客
(21 封私信 / 81 条消息) C++函数模板在.hpp中定义和实现,当有多个文件包含该头文件时编译出现重复定义的问题,该如何解决? - 知乎 (zhihu.com)
文章讲述了在C++中,因头文件包含函数定义和变量,导致在工程中多处包含时出现重复定义的问题。解决方法是将函数声明移至.h文件,定义放在.cpp文件中,并强调命名空间内不能定义变量。还提及了C++函数模板的类似问题及处理方式。
7828

被折叠的 条评论
为什么被折叠?



