В большинстве случаев ошибки с многозначно определяемыми символами обычно связаны с включением кода в две разные единицы компиляции.
Вы уверены, что не включаете GamepadControl.cpp
в один из ваших других исходных файлов?
Например, с вашими файлами и удержанием main.cpp
:
#include "GamepadControll.h"
int main (void) { return 0; }
Я не получаю ошибок с g++ main.cpp GamepadControll.cpp
. Если я изменю эту первую строку на:
#include "GamepadControll.cpp"
и скомпилировать с помощью той же команды, я получаю:
/tmp/ccbu52oq.o: In function `GamepadControll::GamepadControll()':
GamepadControll.cpp:(.text+0x0): multiple definition of
`GamepadControll::GamepadControll()'
Единственная другая возможность, о которой я могу подумать, это если вы явно включите файл кода дважды. Используя безошибочную версию main.cpp
выше, я все еще получаю ошибку при использовании:
g++ main.cpp GamepadControll.cpp GamepadControll.cpp
Если это не один из этих двух случаев, лучше всего предоставить полные сведения о вашей ситуации. Это означает каждый исходный файл (включая основной), используемые вами команды компиляции и компоновки, а также среду (например, gcc3 в Linux, Code :: Blocks в Windows).