我在我的代碼是這樣的:奇怪的多重定義錯誤
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