Frage zu g++ Problem



  • Grüsse an die Runde!

    Folgendes: schreibe gerade an einem Programm und hab jetzt zwei Klassen definiert, jetzt will ich in der vererbten Klasse auf eine Methode der Basisklasse zugreifen. Mein Problem ist jetzt, das ich einen error der art "undefined reference to 'InputHandler::get_char_Input()' bekomme. da stimmt wohl was mit dem einbinden der headers nicht ganz .. bitte um hilfe .. danke

    // input_handler.h - declaration of the class InputHandler
    
    #ifndef input_handler_h___
    #define input_handler_h___
    
    //--------------------------------------------------------------------
    
    class InputHandler
    {
     public:
      char get_char_Input();
      int get_int_Input();
    };
    
    #endif
    
    //input_handler.cpp 
    
    #include <iostream>
    #include "input_handler.h"
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::cerr;
    
    char InputHandler::get_char_Input()
    {
      char char_token_;
      cout << "labyrinth>";
      cin >> char_token_;
      return(char_token_);
    }
    
    int InputHandler::get_int_Input()
    {
      int int_token_;
      cin >> int_token_;
      return(int_token_);
    }
    
    //labyrinth_in.h header file for input operations 
    //               which are exklusive for the labyrinth game
    
    #ifndef labyrinth_in_h___
    #define labyrinth_in_h___
    
    #include "input_handler.h"
    //--------------------------------------------------------------------
    
    class LabyrinthIn : public InputHandler
    {
     public:
      char getEvent();
      char* getLabyrinthStream();
      int x_coordinate_;
      int y_coordinate_;
    };
    
    #endif
    
    //labyrinth_in.cpp
    
    #include <iostream>
    #include "labyrinth_in.h"
    #include "input_handler.h"
    
    using std::cout;
    using std::cin;
    using std::cerr;
    using std::endl;
    
    char LabyrinthIn::getEvent()
    {
      char return_value;
      char char_token;
      int int_token;
    
      char_token=get_char_Input();
      switch(char_token)
        {
        case 's':
          return_value=int_token;
          int_token=get_int_Input();
          if ((int_token >= 1) && (int_token <= 9))
    	{
    	  x_coordinate_=int_token;
    	}
          int_token=get_int_Input();
          if ((int_token >=1) && (int_token <= 9))
    	{
    	  y_coordinate_=int_token;
    	}
          return(return_value);
          break;
        }
    }
    
    int main()
    {
      LabyrinthIn my_LabIn;
      char test;
      test=my_LabIn.getEvent();
      cout << test << endl;
    }
    


  • du hast den Code nicht richtig gelinkt. Du musst erst von den Code-Dateien Objekt-Dateien erstellen (-c Option) und kannst die dann zusammen linken lassen

    oder schau dir mal volkards Makefile an

    (btw. solltest du __ nicht in Bezeichnern benutzen, da dass der Standard verbietet)


Anmelden zum Antworten