2016-08-18 1 views
-1

Erreur: définition multiple de `gamekey :: getGameKeywords() »multiple Définition C++ [Erreur]

GameKey.cpp et .h erreur de la cause, alors que ExitKey.cpp et .h sont essentiellement la même classe et tête exacte mais ne produisez pas d'erreur.

(je sais toute chose sur l'utilisation namespace std)

//Function Declarations 
#ifndef GAMEKEY_H 
#define GAMEKEY_H 

// C++ libraries 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 
#include <iterator> 
#include <algorithm> 

using namespace std; 

class GameKey 
    { 
     private: 
      string keyString; 
      string lineData; 

     public: 
      // Default constructor 
      GameKey(); 
      // Deconstructor 
      ~GameKey(); 
      // Get keywords 
      string getGameKeywords(); 
    }; 
#endif 

GameKey.cpp

//Function Definitions 
#include "GameKey.h" 

// Constructor 
GameKey::GameKey() 
    { 
    } 
// Deconstructor 
GameKey::~GameKey() 
    { 
    } 
// Get keywords 
string GameKey::getGameKeywords() 
    { 
     ifstream infile; 
     infile.open("GameKey.txt"); 
     while (getline(infile, lineData)) 
      {  
       keyString.append(lineData); 
       keyString.append("\n"); 
      } 
     infile.close(); 
     return keyString; 
    } 

ExitKey.h

//Function Declarations 
#ifndef EXITKEY_H 
#define EXITKEY_H 

// C++ libraries 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 
#include <iterator> 
#include <algorithm> 

using namespace std; 

class ExitKey 
    { 
     private: 
      string keyString; 
      string lineData; 

     public: 
      // Default constructor 
      ExitKey(); 
      // Deconstructor 
      ~ExitKey(); 
      // Get keywords 
      string getExitKeywords(); 
    }; 
#endif 

ExitKey.cpp

//Function Definitions 
#include "ExitKey.h" 

// Constructor 
ExitKey::ExitKey() 
    { 
    } 
// Deconstructor 
ExitKey::~ExitKey() 
    { 
    } 
// Get keywords 
string ExitKey::getExitKeywords() 
    { 
     ifstream infile; 
     infile.open("ExitKey.txt"); 
     while (getline(infile, lineData)) 
      {  
       keyString.append(lineData); 
       keyString.append("\n"); 
      } 
     infile.close(); 
     return keyString; 
    } 

Merci pour toute aide!

+0

Est-il possible que vous ayez un autre fichier (non 'GameKey.cpp') qui définit' gamekey :: getGameKeywords() '? – Rakete1111

+1

Veuillez publier un [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). Impossible de reproduire dans mon environnement local (Windows 7, gcc 4.8.1, compile commande = 'g ++ ExitKey.cpp GameKey.cpp main.cpp -o main') Le contenu de' main.cpp' est 'int main() {} ' – MikeCAT

+0

@ Rakete1111 Malheureusement je ne pense pas. – Sean

Répondre

1

Je pense que vous incluez probablement GameKey.cpp au lieu de GameKey.h ailleurs

+0

main.cpp inclut GameKey.h, pas .cpp – Sean

0

Je ne suis pas certain que la commande utilisée pour la compilation n'est pas affichée. Une possibilité est de répéter les noms de fichiers dans votre commande de compilation pourrait également conduire à cette erreur.

par exemple: -

g++ ExitKey.cpp GameKey.cpp GameKey.cpp main.cpp -o main 
+0

Je suis nouveau dans le codage, je ne connais rien aux commandes utilisées pour la compilation. J'utilise Dev C++ qui utilise un compilateur MinGW. Comment accéder à la commande de compilation? – Sean

+0

Je suppose que vous utilisez Dev C++ dans un environnement Windows. Dans ce cas, je pense que vous pourriez avoir inclus "GameKey.cpp" au lieu de "GameKey.h" dans votre fichier principal. –

+0

Lorsque vous cliquez sur compiler et que vous exécutez la fenêtre Dev C++, vous exécutez une commande comme celle que j'ai mentionnée dans ma réponse avec le compilateur MinGW. La commande est utilisée pour compiler les codes C++ dans les shells Unix. J'espère que ça aide. bonne chance! –