У меня есть два .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)?
Является ли заголовок, указанный выше полным (кажется, не хватает, по крайней мере, включить охранников)? Сообщение об ошибке выглядит так, как будто символы 'character :: character :: info_character()' определены в заголовке. ... или вы случайно включаете файл .cpp. Другая возможность заключается в том, что зависимости для Mechanics.obj не были правильно отслежены, и это осталось от более ранней версии (попробуйте очистить проект и перестроить). –
Вы уверены, что вы не включаете заголовок дважды из чего-либо? Он, похоже, не включает в себя охранников, и действительно должен. – ssube
Вы не можете получить эту ошибку из кода, который вы опубликовали. Это ошибка компоновщика, и поскольку ваш код не может скомпилироваться из-за [раздражающего разбора] (http://en.wikipedia.org/wiki/Most_vexing_parse), он не может достичь стадии связывания. – Angew