Datei kann nicht "includeed" werden! Compiler stürtz ab
-
Man sollte auch .cpp-Dateien nicht includen, sondern nur die dazu gehörigen header.
Die .cpp sollte man dann seperat kompilieren und später zusammen-linken.
-
#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> // 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; public: void show_energie() const { std::cout << "- Energie: " << m_energie << 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...
#include <iostream> #include "Game.h" #include "spaceship.h" int main() { bool close = false; while (close == false) { std::cout << "Versuch V0.1BETA" << std::endl; std::cout << "(1) Starten" << std::endl; std::cout << "(2) Beenden" << std::endl; unsigned short sel = 0; while (!(std::cin >> sel) || sel > 2 || sel < 1) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } switch (sel) { case 1: { /* mach halt was */ } break; case 2: { close = true; } break; } } /* std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.get(); */ // anstelle von std::system("pause"); ... viel besser! }
-
Des mit den hpp Dateien wusste ich aber ürgendwie funktioniert das nicht mit Dev C++!
Kann mir da jemand helfen wie ich des da schaffe!
Danke für die bisjetzt angekommen antworten
-
Wo ist dein Problem? Leg eine Datei "spaceship.h" an und pack da den 1. Code rein den ich gepostet hab. Dann eine Datei "main.cpp" wo du den 2. reinpackst. Eine 3. Datei namens "game.h" wo du dann deine Game-Klasse reinpackst. Das alles fügst du dann zu deinem Projekt hinzu... achja ... nimm lieber Visual C++ 2005 Express Edition ... ist auch kostenlos und einfacher zu nutzen als auch besser ^^
-
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 VariableRaumschiffauswahlin 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__INCLUDEDund 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__INCLUDEDHier 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 integerBitte 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.
