我的代码中有这样的东西:
namespace A {
namespace B {
void
GetLine(std::istream& stream, std::string& line)
{
line.clear();
while (stream.good()) {
std::getline(stream, line);
boost::trim(line);
if (not line.empty()) break;
}
boost::to_upper(line);
}
}
}
每当调用 A::B::GetLine
时,我都会收到多重定义错误。有什么想法吗?
(代码正在运行,所以如果您需要更多信息,我会尝试给出具体的片段,但我不能只将整个代码粘贴到这里)。
最佳答案
您几乎可以肯定地将代码包含在多个 header 中,而不是在 header 中声明并在源文件中定义。您需要将函数声明为内联、模板化,或者将定义移动到源文件中,但将声明保留在 header 中。
关于c++ - 奇怪的多重定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541416/