Hi und danke nochmals für den Ratschlag mit den IDE Wechsel.
Eclipse ist der Hammer
Ich wollte nun mal Fragen, ob es sich bei dem folgenden kleinen Codeabschnitt um OOP handelt und ob ich
damit soweit auf den richtigen weg bin von C zu C++ zu wechseln.
Ich habe Hier auch das Problem der Globalen Variablen abgeschafft und hoffe, dass es nun der OOP Logik gerecht wird.
main.cpp
Klasse.
kSDL_Initialisieren.h
Funktions Prototyp.
fSDL_Initialisieren_Pandora.h
Funktion.
fSDL_Initialisieren_Pandora.cpp
Ich wollte nun wissen, ob ich so in der Art weiter machen kann und ob es "richtiges", "echtes" OOP ist ?
Ich glaube ja, weil ich doch an einem Objekt(dem Klassen Teil Pandora) Arbeite.
MfG LecramOS :-D
-- Mi Mär 17, 2010 21:03 --
Ich hänge jetzt schon den ganzen Tag an diesen Problem.
Ich bekomme immer die gleiche Fehlermeldung.
../kSDL_Bilder_Laden.h:110: error: cannot convert ‘SDL_Surface*’ to ‘SDL_Surface kSDL_Bilder_Laden::*’ in return
make: *** [fSDL_Bilder_Laden_Intro.o] Fehler 1
Weiß jemand wo ran es liegt ? ??
??
Eclipse ist der Hammer
Ich wollte nun mal Fragen, ob es sich bei dem folgenden kleinen Codeabschnitt um OOP handelt und ob ich
damit soweit auf den richtigen weg bin von C zu C++ zu wechseln.
Ich habe Hier auch das Problem der Globalen Variablen abgeschafft und hoffe, dass es nun der OOP Logik gerecht wird.
main.cpp
Code:
<i>
</i>#include "fSDL_Initialisieren_Pandora.h"
int main(int argc, char *argv[]) {
fSDL_Initialisieren_Pandora() ;
return 0 ;
}
Klasse.
kSDL_Initialisieren.h
Code:
<i>
</i>#ifndef _KSDL_INIT_
#define _KSDL_INIT_
#include <SDL/SDL.h>
class kSDL_Initialisieren {
private:
int BILDSCHIRM_WEITE ;
int BILDSCHIRM_HOEHE ;
int BILDSCHIRM_FARBTIEFE ;
SDL_Surface *bildschirm ;
public:
kSDL_Initialisieren() ;
~kSDL_Initialisieren() ;
void gebeBILDSCHIRM_WEITE (int BILD_W){BILDSCHIRM_WEITE = BILD_W ; }
void gebeBILDSCHIRM_HOEHE (int BILD_H){BILDSCHIRM_HOEHE = BILD_H ; }
void gebeBILDSCHIRM_FARBTIEFE (int BILD_F){BILDSCHIRM_FARBTIEFE = BILD_F ; }
void gebeBildschirm (SDL_Surface *screen){bildschirm = screen ; }
int nehmeBILDSCHIRM_WEITE() const {return BILDSCHIRM_WEITE ; }
int nehmeBILDSCHIRM_HOEHE() const {return BILDSCHIRM_HOEHE ; }
int nehmeBILDSCHIRM_FARBTIEFE() const {return BILDSCHIRM_FARBTIEFE ; }
SDL_Surface *nehmeBildschirm() const {return bildschirm ; }
};
kSDL_Initialisieren::kSDL_Initialisieren() {
BILDSCHIRM_WEITE = NULL ;
BILDSCHIRM_HOEHE = NULL ;
BILDSCHIRM_FARBTIEFE = NULL ;
bildschirm = NULL ;
}
kSDL_Initialisieren::~kSDL_Initialisieren() {
}
#endif //_KSDL_INIT_
Funktions Prototyp.
fSDL_Initialisieren_Pandora.h
Code:
<i>
</i>
#ifndef _FSDL_INIT_PANDORA_
#define _FSDL_INIT_PANDORA_
void fSDL_Initialisieren_Pandora() ;
#endif // _FSDL_INIT_PANDORA_
Funktion.
fSDL_Initialisieren_Pandora.cpp
Code:
<i>
</i>
#include <iostream>
#include <cstdlib>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL_mixer.h>
using namespace std ;
#include "kSDL_Initialisieren.h"
void fSDL_Initialisieren_Pandora() {
// Erzeugt ein Objekt
kSDL_Initialisieren Pandora ;
// Setzt die Variablen
Pandora.gebeBILDSCHIRM_WEITE(800) ;
Pandora.gebeBILDSCHIRM_HOEHE(480) ;
Pandora.gebeBILDSCHIRM_FARBTIEFE(16) ;
// Bei exit() wird SDL_Quit ausgeführt
atexit(SDL_Quit) ;
// Initialisiert SDL
if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
cout << "Fehler beim Initialisieren von SDL" ;
exit(1) ;
}
// Setzt den Video Mode
Pandora.gebeBildschirm(SDL_SetVideoMode(Pandora.nehmeBILDSCHIRM_WEITE(),Pandora.nehmeBILDSCHIRM_HOEHE(),
Pandora.nehmeBILDSCHIRM_FARBTIEFE(),SDL_SWSURFACE)) ;
if(Pandora.nehmeBildschirm() == NULL) {
cout << "Fehler beim setzen von Video" << endl ;
exit(1) ;
}
// Initialisiert die TTF Schrift
if(TTF_Init() < 0) {
cout << "Fehler beim Initialisieren von TTF Schrift" << endl ;
exit(1) ;
}
// Initialisiere SDL_mixer ,frequenz,Sound_Format,Channels(Stero || Mono),Max Datei Größe.
if(Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2,4096) < 0) {
cout << "Fehler beim Initialisieren von SDL_mixer" << endl ;
exit(1) ;
}
// Setzt einen Titel oben im Fenster und ermöglicht ein Icon einzufügen
SDL_WM_SetCaption("Pandora Spiel",NULL);
}
Ich wollte nun wissen, ob ich so in der Art weiter machen kann und ob es "richtiges", "echtes" OOP ist ?
Ich glaube ja, weil ich doch an einem Objekt(dem Klassen Teil Pandora) Arbeite.
MfG LecramOS :-D
-- Mi Mär 17, 2010 21:03 --
Ich hänge jetzt schon den ganzen Tag an diesen Problem.
Ich bekomme immer die gleiche Fehlermeldung.
../kSDL_Bilder_Laden.h:110: error: cannot convert ‘SDL_Surface*’ to ‘SDL_Surface kSDL_Bilder_Laden::*’ in return
make: *** [fSDL_Bilder_Laden_Intro.o] Fehler 1
Weiß jemand wo ran es liegt ? ??
Code:
/*
* kSDL_Bilder_Laden.h
*
* Eine Klasse zum Laden der Bilder
*
* Created on: 17.03.2010
* Author: lecramos
*/
#ifndef _KSDL_BILDER_LADEN_
#define _KSDL_BILDER_LADEN_
#include <iostream>
#include <cstdlib>
#include <string>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
using namespace std ;
class kSDL_Bilder_Laden {
private:
SDL_Surface *hauptKaraktere ;
SDL_Surface *hauptKaraktere2 ;
SDL_Surface *hauptKaraktere3 ;
SDL_Surface *nebenKaraktere ;
SDL_Surface *nebenKaraktere2 ;
SDL_Surface *nebenKaraktere3 ;
SDL_Surface *karten ;
SDL_Surface *karten2 ;
SDL_Surface *karten3 ;
SDL_Surface *Objekte ;
SDL_Surface *Objekte2 ;
SDL_Surface *Objekte3 ;
SDL_Surface *optimierteBilder(string) ;
public:
// Konstruktor und Destruktor Delaration
kSDL_Bilder_Laden() ;
~kSDL_Bilder_Laden() ;
void gebeHauptKaraktere(string Haupt_K){hauptKaraktere = optimierteBilder(Haupt_K) ; }
void gebeHauptKaraktere2() ;
void gebeHauptKaraktere3() ;
};
// Konstruktor Definition
kSDL_Bilder_Laden::kSDL_Bilder_Laden() {
hauptKaraktere = NULL ;
hauptKaraktere2 = NULL ;
hauptKaraktere3 = NULL ;
nebenKaraktere = NULL ;
nebenKaraktere2 = NULL ;
nebenKaraktere3 = NULL ;
karten = NULL ;
karten2 = NULL ;
karten3 = NULL ;
Objekte = NULL ;
Objekte2 = NULL ;
Objekte3 = NULL ;
}
// Destruktor Definition
kSDL_Bilder_Laden::~kSDL_Bilder_Laden() {
}
// Bilder Optimieren Funktion
SDL_Surface kSDL_Bilder_Laden::*optimierteBilder(string bild) {
// Funktions Variablen
SDL_Surface *temp = NULL ;
SDL_Surface *optimiertesBild = NULL ;
// Bei exit() wird SDL_Quit ausgeführt
atexit(SDL_Quit) ;
// Lädt ein Bild in den Temporaeren Speicher
temp = IMG_Load(bild.c_str()) ;
if(temp == NULL) {
cout << "Fehler beim Laden und Optimieren von Bild" << endl ;
exit(1) ;
}
// Optimiert das Bild mit der SDL_DisplayFormat Funktion
optimiertesBild = SDL_DisplayFormat(temp) ;
// Hier kommt noch der Color Key hin.
// Gibt den Speicherplatz für das Temp Bild frei
SDL_FreeSurface(temp) ;
return optimiertesBild ; // <---- Hier ist der Fehler.
}
#endif //_KSDL_BILDER_LADEN_
??