Wieso habe ich solche Fehler beim Compilieren?
-
Hallo zusammen
Könnt ihr mir weiterhelfen?
Ich habe eine kleines SDL Spiel programmiert, das nun allerdings einige Fehler enthält. Und nun weiss ich nicht wie ich die Fehler beheben kann!!!
Hier sind die Fehler:
1>------ Erstellen gestartet: Projekt: NeuesGame, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>main.cpp 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(22) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(22) : error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'sFilename' 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(24) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(24) : error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'sFilename' 1>Sprite.cpp 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(22) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(22) : error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'sFilename' 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(24) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(24) : error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'sFilename' 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.cpp(26) : error C2511: 'void CSprite::Load(const std::string)': Überladene Memberfunktion nicht in 'CSprite' gefunden 1> c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(17): Siehe Deklaration von 'CSprite' 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.cpp(52) : error C2511: 'void CSprite::spriteloop(const std::string)': Überladene Memberfunktion nicht in 'CSprite' gefunden 1> c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(17): Siehe Deklaration von 'CSprite' 1>Grund.cpp 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(22) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(22) : error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'sFilename' 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(24) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\sprite.h(24) : error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'sFilename' 1>c:\dokumente und einstellungen\patrick\eigene dateien\visual studio 2008\projects\neuesgmae\neuesgmae\grund.cpp(38) : error C2664: 'CSprite::spriteloop': Konvertierung des Parameters 1 von 'const char [11]' in 'const int' nicht möglich 1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist 1>Code wird generiert... 1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Patrick\Eigene Dateien\Visual Studio 2008\Projects\NeuesGmae\NeuesGmae\Debug\BuildLog.htm" gespeichert. 1>NeuesGame - 15 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Hier ist der Code:
// Application.h // #ifndef _APPLICATION_H__ #define _APPLICATION_H__ // Include-Dateien // #include <SDL.h> #include "Singleton.h" #define g_pApplication CApplication::Get () // Klasse // class CApplication : public TSingleton<CApplication> { public: CApplication (); ~CApplication (); void inline onUpdate (); void inline onEvent (SDL_Event const& event); void mainloop (); SDL_Surface * GetScreen () {return screen;} private: SDL_Surface * screen; bool running; }; #endif // Grund.h // #ifndef _GRUND_H__ #define _GRUND_H__ // Include-Dateien // #include <SDL.h> #include "Application.h" #include "Sprite.h" // Klasse // class CGrund { public: CGrund (); ~CGrund (); void App (); void Sprite (); private: CApplication * pApp; CSprite * pSprite; }; #endif // Singleton.h // #ifndef TSINGLETON #define TSINGLETON template <class T> class TSingleton { protected: // Membervariablen static T * m_pSingleton; // Statisches Objekt public: // Memberfunktionen // Destruktor // virtual ~TSingleton () { } // Get // // Aufgabe: Wenn nötig, statisches Objekt erzeugen und // Zeiger darauf zurückgeben // inline static T * Get () { // Existiert schon eine Instanz? if (!m_pSingleton) { m_pSingleton = new T; // Nein, dann neue Instanz erzeugen } // Zeiger auf die Instanz zurückgeben return (m_pSingleton); } // Get // Statisches Objekt freigeben // static void Del () { // Gab es eine Instanz? if (m_pSingleton) { delete (m_pSingleton); // Ja, dann freigeben m_pSingleton = NULL; // und Zeiger auf NULL setzen } } // Del }; // Die statische Variablen erzeugen // template <class T> T* TSingleton<T>::m_pSingleton = 0; #endif // Sprite.h // #ifndef _SPRITE_H__ #define _SPRITE_H__ // Include-Dateien // #include <SDL.h> #include "Application.h" // Klasse // class CSprite { public: CSprite (); ~CSprite (); void Load (const string sFilename); void inline Render (); void spriteloop (const string sFilename); private: SDL_Surface * image, * screen; SDL_Rect rect; }; #endif // Application.cpp // // Include-Dateien // #include "Application.h" #include <iostream> using namespace std; CApplication::CApplication() : screen (NULL), running (true) { if (SDL_Init (SDL_INIT_VIDEO) == -1) { printf ("Die SDL kann nicht intitialisiert werden: %s\n", SDL_GetError ()); exit (1); } screen = SDL_SetVideoMode (640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF); if (screen == NULL) { printf ("Der Video-Modus kann nicht gesetzt werden: %s\n", SDL_GetError ()); exit (1); } } CApplication::~CApplication() { SDL_Quit (); } void inline CApplication::onEvent(const SDL_Event &event) { switch (event.type) { case (SDL_QUIT): { running = false; } break; } } void inline CApplication::onUpdate() { SDL_Flip (screen); } void CApplication::mainloop() { SDL_Event event; while (running) { while (SDL_PollEvent (&event)) this->onEvent (event); this->onUpdate (); } } // Grund.cpp // // Include-Dateien // #include "Grund.h" CGrund::CGrund() : pApp (NULL), pSprite (NULL) { pApp = new CApplication; pSprite = new CSprite; } CGrund::~CGrund() { if (pApp != NULL) { delete (pApp); pApp = NULL; } if (pSprite != NULL) { delete (pSprite); pSprite = NULL; } } void CGrund::App() { pApp->mainloop (); } void CGrund::Sprite() { pSprite->spriteloop ("Gegner.bmp"); } // main.cpp // // Include-Dateien // #include "Grund.h" // Haupprogramm // int main (int argc, char * argv[]) { // Instanz erstellen // CGrund Grund; Grund.App (); Grund.Sprite (); return 0; } // Sprite.cpp // // Include-Dateien // #include "Sprite.h" #include <iostream> using namespace std; CSprite::CSprite() : image (NULL) { screen = g_pApplication->GetScreen (); } // Konstruktor CSprite::~CSprite() { // nichts } // Destruktor void CSprite::Load(const string sFilename) { image = SDL_LoadBMP (sFilename.c_str () ); if (image == NULL) { cout << "Fehler beim Laden von: " << sFilename.c_str (); cout << endl; cout << "Fehlermeldung: " << SDL_GetError () << endl; exit (1); } // rect initialisieren // rect.x = 0; rect.y = 0; rect.w = image->w; rect.h = image->h; } // Load void inline CSprite::Render () { SDL_BlitSurface (image, NULL, screen, &rect); } void CSprite::spriteloop(const string sFilename) { this->Load (sFilename); } // RenderGruss Eglifisch1
-
sprite.h(22) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
In der Datei
sprite.hhast du vergessen den Returnwert einer Funktion anzugeben.grund.cpp(38) : error C2664: 'CSprite::spriteloop': Konvertierung des Parameters 1 von 'const char [11]' in 'const int' nicht möglich
Hier versuchst zu einem Zahlenwert eine Zeichenkette zuzuweisen. Das geht nicht.
Btw. falsches Unterforum. Außerdem hast du für sowas die Dokumentation vom Compiler. Die sollte dir die Fehlermeldungen erklären.
-
Eglifisch1 schrieb:
Und nun weiss ich nicht wie ich die Fehler beheben kann!!!
Indem du die Fehlermeldungen liest. Da stehen genügend Informationen drin, um die Fehler zu beheben, da ist keine Dokumentation notwendig...
