说我有五个文件; fileA.cpp,fileA.hpp,fileB.cpp,fileB.hpp和main.cpp。两个头文件都定义了函数void help()
。我想在main.cpp文件中使用fileA.cpp中的函数和fileB.cpp之间切换。我尝试过切换标题包括,但是visual studio抱怨重复的定义。
答案 0 :(得分:1)
这是一个链接器错误。将fileB.obj
和fileA.obj
(和main.obj
)链接在一起以形成可执行文件。 fileA.obj
和fileB.obj
都会包含void help()
的定义,从而导致多个定义错误。它与更改main.cpp
中的include指令无关。
建议将void help()
括在namespace
:
<强> fileA.hpp 强>:
namespace filea
{
void help();
}
<强> fileA.cpp 强>:
namespace filea
{
void help()
{
// implementation
}
}
<强> fileB.hpp 强>:
namespace fileb
{
void help();
}
<强> fileB.cpp 强>:
namespace fileb
{
void help()
{
// implementation
}
}
<强>的main.cpp 强>:
#include <fileA.hpp>
using filea::help;
//#include <fileB.hpp>
//using fileb::help;