000
31.07.2014, 20:07 Uhr
A13XIS
|
Hinweis: Ich Komme quasi direkt von "Team Java" und es ist echt schwer sich an die Gegebenheiten von cpp zu gewöhnen. Wundert euch also bitte nicht, wenn die folgende Frage ein echt blöder Fehler ist.
Hallo liebe Kollegen, Ich versuche mich ,nach einem Recht langen Anlauf ,an einem SDL-programm. Um es möglichst auf allen OS verfügbar zu machen nutze ich den MinGW G++ Compiler (IDE ist Eclipse CDT). Nun habe ich das Problem, dass in einem Header (Starter.h) Eine Klasse (GraphMan) vom Compiler nicht erkannt wird, obwohl Eclipse kein Problem erkennt.
C++: |
//Starter.h #pragma once #ifndef STARTER_H_ #define STARTER_H_ #include "GraphMan.h" #include "AudioMan.h" #include "InputMan.h" #include <iostream> using namespace man; class Starter { public: Starter(); ~Starter(); void gameLoop(); void die(const char *); SDL_Event * ev; private: GraphMan graphics;//<--GraphMan does not name a type bool quit; }; #endif /* STARTER_H_ */
|
C++: |
#pragma once #ifndef GRAPHMAN_H_ #define GRAPHMAN_H_ #include "Starter.h" #include "SDL2/SDL.h" #include "SDL2/SDL_image.h" #include "SDLMan.h" #include <vector> #include <string>
class Starter; struct Graphic{ //Variablen und Konstruktor von Grafik }; struct Sprite{ //Variablen und Konstruktor von Sprite }; namespace man { class GraphMan { public: GraphMan(Starter * starter); virtual ~GraphMan(); void paint(); void addGraphic(SDL_Texture * text,std::string name, SDL_Rect*pos, SDL_Rect*crop); void addSprite(SDL_Texture* text,std::string name,int frame,int tframes, SDL_Rect*pos, SDL_Rect*crop); private: Starter*starter; SDL_Window * wind; SDL_Renderer * rend; std::vector<Graphic> graphVect; std::vector<Sprite> spriteVect; }; } /* namespace man */ #endif /* GRAPHMAN_H_ */
|
an dieser Stelle sei gesagt, dass bei einem erneuten Buildversuch diese Meldung verschwindet und in der cpp-Datei dieses Objekts (starter.cpp) eine neue Auftaucht die da wirklich nichts zu suchen.
C++: |
//Starter.cpp
#include "Starter.h" Starter::Starter(){//<--no matching function for call to 'man::GraphMan::GraphMan()'
std::cout<<"starter"<<std::endl; quit=false; ev=new SDL_Event(); graphics = GraphMan(this); gameLoop(); }
Starter::~Starter() { delete ev; man::SDLMan::quit(); }
|
Gebe es diese "Sondermeldung" nicht wär ich mir sicher, dass ich einfach nur zu doof bin, die Objekte miteinander zu verbinden. So ist meine Frage aber "Compiler- oder Codefehler" (und wie kann man ihn lösen) -- Java "Programmieren"(also in Anführungszeichen). Ernsthaft? Mit Java lässt sich viel besser arbeiten, als mit jeder anderen Sprache! |