2009-12-25 4 views
0

Я получил сообщение об ошибке:несколько определений `GamepadControll :: GamepadControll() '

множественное определение` GamepadControll :: GamepadControll()'

После того, как разочарование в течение нескольких часов я уменьшил код для:

GamepadControll.h:

#ifndef GAMEPADCONTROLL_H_ 
#define GAMEPADCONTROLL_H_ 

#include <iostream> 

class GamepadControll { 
public: 
    GamepadControll(); 
    virtual ~GamepadControll(); 
}; 

#endif /* GAMEPADCONTROLL_H_ */ 

Gam epadControl.cpp:

#include "GamepadControll.h" 

GamepadControll::GamepadControll() { 
    std::cout << "Hello, I work!" << std::endl; 
} 

GamepadControll::~GamepadControll() { 
    // TODO Auto-generated destructor stub 
} 

Но я просто получаю это сообщение об ошибке!

// Редактировать: Главное не определено .. Не могу ли я запустить только класс без основных файлов, например, в java? Вот весь проект eclipse: http:/ul.to/m37d2z

+1

Вам нужно будет предоставить дополнительную информацию о том, где вы компилируете этот код. Компилятор/IDE? Где указано main()? – mcdave

+0

Main не определен .. Не могу ли я запустить только класс без основных файлов, например, в java? Полный проект eclipse: http://ul.to/m37d2z – 2009-12-25 13:00:13

ответ

2

Наиболее типичные ситуации с ошибками, обусловленными множественными значениями, как правило, вызваны включением кода в два разных блока компиляции.

Вы уверены, что вы не указали 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).

+0

thx Я просто подумал, что мне не нужен что-то вроде основного файла, в который включен класс. Охх .. это влияние JAVA ^^ – 2009-12-25 17:13:17

0

Из этого примера кода, кажется, нет ошибки. Ошибка может быть несколькими определенными конструкторами GamepadControll.

Пожалуйста, поиск конструктор в кодовой базе и найти какие-либо несколько экземпляров определяется

GamepadControll::GamepadControll() 

Другая возможность: проверить, если вы определили конструктор в файле заголовка (который не выглядит как случай из примера кода, хотя)