-3
我有兩個.cpp文件和一個.h文件中:LNK2005 - 已定義的對象
#include <iostream>
#include <string>
#include <vector>
namespace characters
{
using namespace std;
class character{
public:
void info_character();
//...
};
}
我這個頭文件添加到我的.cpp文件。所以,當我想用:
int _tmain(int argc, _TCHAR* argv[])
{
character test();
test.info_character();
}
它會導致錯誤:
Error 1 error LNK2005: "public: void __thiscall characters::character::info_character(void)" ([email protected]@[email protected]@QAEXXZ) already defined in Mechanics.obj
如何修復它(我想的頭文件添加到我的所有.cpp文件)?
上面引用的標題是否完整(它似乎缺少,至少包括警衛)?錯誤消息看起來好像是在標頭中定義了「characters :: character :: info_character()」。 ...或者您意外地包含.cpp文件。另一種可能性是Mechanics.obj的依賴關係沒有正確跟蹤,它是早期版本的遺留問題(嘗試清理項目和重建)。 – 2014-11-05 15:34:53
你確定你沒有包含標題兩次嗎?它似乎沒有包括警衛,並且真的應該。 – ssube 2014-11-05 15:35:05
您不可能從您發佈的代碼中獲取此錯誤。這是一個鏈接器錯誤,並且由於[vexing parse](http://en.wikipedia.org/wiki/Most_vexing_parse),您的代碼無法編譯,因此無法達到鏈接階段。 – Angew 2014-11-05 15:40:39