Datei kann nicht "includeed" werden! Compiler stürtz ab



  • ne ich bin dagegen (siehe meine Signatur)



  • Krux schrieb:

    ne ich bin dagegen (siehe meine Signatur)

    Code::Blocks mit aktuellem MinGW...



  • Hab keine Orig. version nur Authoren also -> keine Exe 🙄



  • @Krux: Begründung?
    @greece57: Solange Krux keine sinnvolle Begründung gibt, warum du nicht Microsoft Visual C++ 2005 Express Edition nutzen solltest, würde ich dir empfehlen umzusteigen!



  • Danke (:
    Ne ich wills halt combilen! u. das geht mit der authoren version





  • danke!
    Warum geht das nicht?:

    case 1: 
            { 
              CGame Game;
              Game.aufgehts();
              CSpaceship Spaceship;
              Spaceship show_energie();
            } break;
    

    Ich will die Funktion show_energie aufrufen wie mach ich das?



  • Spaceship.show_energie();
    


  • geht nicht
    Spaceship.show_energie();



  • in deinem Code auf der ersten Seite gibt es auch keine Funktion "show_energie()", du musst sie schon deklarieren und implementieren.

    FEHLERMELDUNGEN MITPOSTEN
    "GEHT NICHT" IST KEINE FEHLERMELDUNG



  • doch ich hab ja den von Evil korrigierten code genommen!!
    Fehlermeldung kommt gleich



  • So ich hab die Fehler jetzt bereinigt aber wie ist es so schön?
    Genau
    Kommt gleich ein neues Problem:
    Wie kann ich die Variable

    Raumschiffauswahl
    

    in SpaceShip.h verwenden?
    hier ist Game.h:

    #if !defined GAME_H__INCLUDED 
    #define GAME_H__INCLUDED 
    
    #if (_MSC_VER > 1000) 
    #pragma once 
    #endif // _MSC_VER > 1000 
    
    #include <iostream> 
    #include <string> 
    
    class Game
    {
          public:
    
                 char Raumschiffauswahl;
    
                 void aufgehts ()
                 {
                      std::cout << "Waehlen sie die Daten fuer ihr Raumschiff" << std::endl;
                      std::cout << "Fuer ein schnelles Raumschiff druecken sie (s)chnell" << std::endl;
                      std::cout << "Fuer ein grosses Raumschiff druecken sie (b)ig" << std::endl;
                       do
                         {
                          if (Raumschiffauswahl != 's' && Raumschiffauswahl != 'S' && Raumschiffauswahl != 'B' && Raumschiffauswahl != 'b')
                             std::cin  >> Raumschiffauswahl;
                                  if (Raumschiffauswahl != 's' && Raumschiffauswahl != 'S' && Raumschiffauswahl != 'B' && Raumschiffauswahl != 'b')
                                     std::cout << "Falsche eingabe" << std::endl;
                          }while (Raumschiffauswahl != 's' && Raumschiffauswahl != 'S' && Raumschiffauswahl != 'B' && Raumschiffauswahl != 'b');
                 }
    
    };
    #endif // GAME_H__INCLUDED
    

    und hier ist SpaceShip.h:

    #if !defined SPACE_SHIP_H__INCLUDED 
    #define SPACE_SHIP_H__INCLUDED 
    
    #if (_MSC_VER > 1000) 
    #pragma once 
    #endif // _MSC_VER > 1000 
    
    #include <iostream> 
    #include <string> 
    #include "game.h"
    
    // using namespace std; niemals in einem HEADER! 
    
    class SpaceShip 
    { 
    public: 
        SpaceShip() : m_energie(0), m_speed(0) {} 
    private: 
        unsigned short m_energie; 
        unsigned int m_speed; 
        std::string m_name; 
        Game *pRaumschiffauswahl;
    
    public: 
        void UpdateSpaceShip ()
        {
             if (*pRaumschiffauswahl == 's' || *pRaumschiffauswahl == 'S')
                {
                m_energie = 100;
                m_speed = 500;
                }
             else if (*pRaumschiffauswahl == 'b' || *pRaumschiffauswahl == 'B')
                 {
                  m_energie = 500;
                  m_speed = 100;
                  }
             else
                  std::cout << "Falsche Eingabe" << std::endl;
        }
        void show_energie() const { std::cout << "- Energie: " << m_energie << "km/h" << std::endl; } 
        void show_speed() const { std::cout << "- Geschwindigkeit: " << m_speed << std::endl; } 
        void show_data() const { std::cout << "." << m_name << ": " << std::endl; show_energie(); show_speed(); }
    }; 
    
    #endif // SPACE_SHIP_H__INCLUDED
    

    Hier taucht der Fehler auf:
    no match for 'operator==' in ((SpaceShip)this)->SpaceShip::pRaumschiffauswahl == 's'

    das gleiche für 'S' ; 'b' und 'B'

    und wenn ich die Zeile so schreibe was meiner Meinung nach eigentlich kompletter blödsinn ist:

    if (SpaceShip::pRaumschiffauswahl == 's' || SpaceShip::pRaumschiffauswahl == 'S')
    

    kommt der Fehler
    ISO C++ forbids comparison between pointer and integer

    Bitte helft mir

    AJA falls ich es so schreibe

    char *pRaumschiffauswahl;
    
    public: 
        void UpdateSpaceShip ()
        {
             if (*pRaumschiffauswahl == 's' || *pRaumschiffauswahl == 'S')
                {
                m_energie = 100;
                m_speed = 500;
                }
             else if (*pRaumschiffauswahl == 'b' || *pRaumschiffauswahl == 'B')
                 {
                  m_energie = 500;
                  m_speed = 100;
                  }
             else
                  std::cout << "Falsche Eingabe" << std::endl;
        }
    

    geht es zwar aber er geht in die else schleife:

    std::cout << "Falsche Eingabe" << std::cout;
    


  • Krux schrieb:

    ne ich bin dagegen (siehe meine Signatur)

    Wenn Du es denn wenigstens endlich mal korrekt schreiben würdest. 👎


Anmelden zum Antworten