我在我的代码是这样的:奇怪的多重定义错误
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
。任何想法为什么? (代码在工作,所以如果你需要更多的信息,我会试着给出特定的代码片段,但是我不能只在这里修改整个代码)。
你不能发布编译器错误信息吗?也许它会暗示我们不在上面的代码片段中。 – David 2010-08-22 12:13:50
您是否尝试多次链接目标文件?看看你的makefile,看看包含这个函数的.o是否被多次传递给编译器。我假设你使用的是unix或unix系统,但是你可以做的另一件事是在所有目标文件上运行“nm --demangle”并搜索A :: B :: GetLine以查看它是否在多个.o文件中显示为“已定义”。 – George 2010-08-22 12:14:40
nm为+1 --demangle – Chubsdad 2010-08-22 12:32:44