Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Pat711« (25.02.2013, 15:18)
bekomme. (In der Datei "CBox.h" bei {)Zitat
error: expected class-name before '{' token|
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#ifndef CBOX_H_INCLUDED #define CBOX_H_INCLUDED #include "CEntity.h" #define DROP_SPEED 100 //class CEntity; class CBox:public CEntity { public: void gravity(/*CEntity *BoxEntity*/); void TypesLoop() const; CBox(); ~CBox(); }; #endif // CBOX_H_INCLUDED |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include "CBox.h" /* bool CBox::OnLoop() { AnimControl.OnAnimate(); return 1; } */ void CBox::gravity(/*CEntity *BoxEntity*/) { if(true/*!(collision)*/) //Kollisionskontrolle noch aktivieren { /* if(DROP_SPEED <= drop_counter) { BoxEntity->pos.y ++; drop_counter = 0; } drop_counter ++;*/ } } void CBox::TypesLoop() const { } CBox::CBox() { } CBox::~CBox() { } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#ifndef CENTITY_H_INCLUDED #define CENTITY_H_INCLUDED #include <SDL.h> #include <vector> #include "types.h" #include "CAnimationControl.h" #include "CSurface.h" // Entity - Typen: #define TYPE_BOX 1 class CEntity { public: static std::vector<CEntity*> EntityList; // Liste der Entities position pos; // Position int width; // Breite int height; // Höhe CEntity(); virtual ~CEntity(); //Animation int AnimState; // Aktuelles Bild // Funktionen virtual bool OnLoad(std::string file,int Width, int Height, int MaxFrames); // Erstellen virtual void OnLoop(); // Refresh virtual void OnRender(SDL_Surface* Surf_Display,SDL_Surface* Surf_Background); // Rendern virtual void OnCleanup(); // Löschen virtual void SetType(int newtype); virtual int GetType(); virtual void TypesLoop() const; private: SDL_Surface* Surf_Entity; // Surface des Entities CAnimControl AnimControl; int type; position old_pos; // alte Position }; #endif // CENTITY_H_INCLUDED |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#include "CEntity.h" std::vector<CEntity*> CEntity::EntityList; CEntity::CEntity() { Surf_Entity = NULL; pos.x = 0; pos.y = 0; width = 0; height = 0; AnimState = 0; } CEntity::~CEntity() { } bool CEntity::OnLoad(std::string file, int Width, int Height, int MaxFrames) { Surf_Entity = CSurface::load_image(file); this->width = Width; this->height = Height; AnimControl.SetFrameRate(24); if(Surf_Entity == NULL) { return false; } return true; } void CEntity::OnLoop() { AnimControl.OnAnimate(); } void CEntity::OnRender(SDL_Surface* Surf_Display,SDL_Surface* Surf_Background) { if(Surf_Entity == NULL || Surf_Display == NULL) return; if((pos.x != old_pos.y)||(pos.y != old_pos.y)) { CSurface::OnDraw(Surf_Display, Surf_Background, old_pos.x, old_pos.y, 0, 0, width, height); old_pos.x = pos.x; old_pos.y = pos.y; } CSurface::OnDraw(Surf_Display, Surf_Entity, pos.x, pos.y, AnimState * width, AnimControl.GetCurrentFrame() * height, width, height); } void CEntity::SetType(int newtype) { type = newtype; } int CEntity::GetType() { return type; } void TypesLoop() { } void CEntity::OnCleanup() { } |
Genau das hatte ich versucht. Ich habe nun das ganze nochmal in einem extra Projekt probiert allerdings kam ich zum selben Ergebnis: error: expected class-name before '{' token|Zitat
Im Prinzip möchtest du ja nur, dass die abgeleiteten Klassen eine Funktion der Basisklasse überschreibt bzw allgemein implementiert.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <iostream> #include "stdlib.h" #include "CHandler.h" class CApp { private: public: int OnExecute(); }; int CApp::OnExecute() { std::cout << "---Start---\n"; CHandler::NewBase(); // 0 CHandler::NewChild(); // 1 CHandler::NewBase(); // 2 CHandler::NewBase(); // 3 CHandler::NewChild(); // 4 CHandler::NewChild(); // 5 CHandler::NewChild(); // 6 for(unsigned int i= 0; i < CBase::BaseList.size(); i++) { std::cout <<" -------" << i << "------- \n"; CBase::BaseList[i]->output(); } return 0; } int main() { CApp theApp; return theApp.OnExecute(); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#ifndef CBASE_H_INCLUDED #define CBASE_H_INCLUDED #include <iostream> #include <vector> class CBase { public: static std::vector<CBase*> BaseList; virtual void output(); CBase(); private: }; class CChild2: public CBase { public: void output() { std::cout << "Hi, I'm Child-class\n"; ChildExtra(); } void ChildExtra() { std::cout << "Child extra!\n"; } CChild2() { } private: }; #endif // CBASE_H_INCLUDED |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include "CBase.h" std::vector<CBase*> CBase::BaseList; void CBase::output() { std::cout << "Hi, I'm Base-class\n"; } CBase::CBase() { } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#ifndef CCHILD_H_INCLUDED #define CCHILD_H_INCLUDED #include <iostream> /* class CChild: public CBase { public: void output(); void ChildExtra(); CChild(); private: }; */ #endif // CCHILD_H_INCLUDED |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include "CChild.h" /* void CChild::output() { std::cout << "Hi, I'm Child-class\n"; ChildExtra(); } void CChild::ChildExtra() { std::cout << "Child extra!\n"; } CChild::CChild() { } */ |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#ifndef CHANDLER_H_INCLUDED #define CHANDLER_H_INCLUDED #include "CBase.h" class CHandler { public: static void NewBase(); static void NewChild(); }; #endif // CHANDLER_H_INCLUDED |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include "CHandler.h" void CHandler::NewBase() { CBase *object = new CBase; CBase::BaseList.push_back(object); } void CHandler::NewChild() { CBase *object = new CChild2; CBase::BaseList.push_back(object); } |
C-/C++-Quelltext |
|
1 2 3 4 |
void TypesLoop() // << void CEntity::TypesLoop() { } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H5::« (27.02.2013, 21:19)
C-/C++-Quelltext |
|
1 |
void TypesLoop() const |
Sofern ich dich jetzt richtig verstanden habe ist es Entity-Manager.h -> CBox -> CEntity.h? Das schaut so erst mal nicht falsch aus. Wenn du magst kann ich mir mal dein gesamtes Projekt ansehen, wenn du es mir schickst.... dass mein Entity-Manager mein #CBox includiert und CBox dann CEntity, jeweils Cbox und der manager includieren jeweils auch nichts anderes.
Werbeanzeige