我有一个由6个文件组成的项目; main.cpp
、functions.h
、tennisplayer.h
、tennisplayer.cpp
、tennisteam.h
和tennisteam.cpp
,它们大致定义如下:
第一个问题
然而,当我通过tennisteam.h
将functions.h
包含到main.cpp
和tennisteam.cpp
中时,我会得到一个链接器错误,如下所示:
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccv30cX0.o:tennisteam.cpp:(.text+0x0): multiple definition of `function(std::string const&)'; /tmp/ccRThgpp.o:main.cpp:(.text+0x0): first defined here
我知道这是一个链接器错误。我已经找了一个修复,但我遇到的所有职位指示我使用包括警卫,我已经这样做了。有什么我错过了这里?任何帮助将不胜感激。
1条答案
按热度按时间n53p2ov01#
你有一个函数
function(std::string const&)
,你不仅声明了它,而且在头文件中定义了它。如果你需要在头文件中定义它,而不是在.cpp文件中定义它,把它标记为inline
。这会导致两个cpp文件(即main.cpp和tennisteam.cpp)以该函数的定义结束,因为它们都包含该头文件。