2009-12-25 6 views
0

j'ai eu ce message d'erreur:définitions multiples de `GamepadControll :: GamepadControll() '

définition multiple de` GamepadControll :: GamepadControll()'

Après avoir été frustré pendant des heures, je réduit le code:

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 
} 

Mais je viens d'obtenir ce message d'erreur! // Éditer: // Éditer: Le principal n'est pas défini. Impossible de lancer une classe sans fichiers mainfiles comme dans java? Voici l'éclipse entière Projet: http:/ul.to/m37d2z

+1

Vous devrez donner plus d'informations sur l'endroit où vous compilez ce code. Compilateur/IDE? Où est défini() principal? – mcdave

+0

Main n'est pas défini. Impossible de lancer une classe sans fichiers mainfiles comme dans java? Voici l'éclipse entière Projet: http://ul.to/m37d2z –

Répondre

2

La plupart des situations d'erreur à symboles définis de manière multiple ont tendance à être provoquées par l'inclusion de code dans deux unités de compilation différentes.

Etes-vous sûr de ne pas inclure GamepadControl.cpp dans l'un de vos autres fichiers sources?

Par exemple, avec les deux fichiers et une main.cpp tenue:

#include "GamepadControll.h" 
int main (void) { return 0; } 

Je reçois aucune erreur avec g++ main.cpp GamepadControll.cpp. Si je change cette première ligne à:

#include "GamepadControll.cpp" 

et compiler avec la même commande, je reçois:

/tmp/ccbu52oq.o: In function `GamepadControll::GamepadControll()': 
GamepadControll.cpp:(.text+0x0): multiple definition of 
    `GamepadControll::GamepadControll()' 

La seule autre possibilité que je peux penser est que si vous incluez explicitement le fichier de code deux fois. En utilisant la version sans erreur de main.cpp ci-dessus, je encore obtenir l'erreur lors de l'utilisation:

g++ main.cpp GamepadControll.cpp GamepadControll.cpp 

Si c'est qu'aucun de ces deux cas, votre meilleur pari est de fournir les plein détails de votre situation . Cela signifie que chaque fichier source (y compris le fichier principal), les commandes de compilation et de liaison que vous utilisez et l'environnement (par exemple, gcc3 sous Linux, Code :: Blocks sous Windows).

+0

thx Je pensais juste que je n'ai pas besoin de quelque chose comme un fichier principal, où la classe est incluse. Ohhh .. ces influences JAVA ^^ –

0

De cet exemple de code, il ne semble pas y avoir d'erreur. L'erreur peut être plusieurs constructeurs définis GamepadControll.

S'il vous plaît chercher le constructeur dans la base de code et trouver toutes les instances multiples définis

GamepadControll::GamepadControll() 

Autre possibilité: vérifier si vous avez constructeur défini dans le fichier d'en-tête (qui ne semble pas être le cas de l'exemple de code si

Questions connexes