[C++] Wskaznik na klase abstrakcyjna
Ostatnio zmodyfikowano 2014-10-24 07:20
Haker123 Temat założony przez niniejszego użytkownika |
[C++] Wskaznik na klase abstrakcyjna » 2014-10-23 22:01:33 Witam. Chce zrobic wskaznik na klase abstrakcyjna i dostaje takie bledy 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(96): error C2143: syntax error : missing ';' before '*' 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(96): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(96): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(97): error C2143: syntax error : missing ';' before '*' 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(97): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(97): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(62): error C2065: 'Figura' : undeclared identifier 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(62): error C2061: syntax error : identifier 'Figura_Kwadrat' 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(78): error C2065: 'Next' : undeclared identifier 1>d:\programowanie\projekty - programy\moje\tetris\tetris\map.h(78): error C2061: syntax error : identifier 'Figura_Kwadrat'
Kod wyglada tak Map.h #ifndef MAP_H #define MAP_H
#include "zmienne.h" #include "Figura_Abstract.h" #include "Figura_Kwadrat.h" #include <allegro5\allegro5.h> #include <allegro5/allegro_image.h> #include <allegro5\allegro_native_dialog.h> #include <sstream> #include <vector> #include <string>
class Map { public: void Draw_Map(); bool Colision(); bool Check_Line(); void Down_Line(); friend class Game_Screen; Map( void ) { For_Line = 100; Point = 0; Combo = 0; Bonus = 10; Line_Delete = 0; Max_Combo = 0; GameOver = false; Screen_Map.reserve( 31 ); for( int i = 0; i < 31; i++ ) Screen_Map[ i ].reserve( 10 ); for( int y = 0; y < 31; y++ ) for( int x = 0; x < 10; x++ ) Screen_Map[ y ][ x ].Draw = false; Random = rand() % 2; switch( Random ) { case 0: Figura = new Figura_Kwadrat; break; case 1: break; } Random = rand() % 2; switch( Random ) { case 0: Next = new Figura_Kwadrat; break; case 1: break; } } private: std::vector < std::vector < DataMap > > Screen_Map; Figura_Abstract * Figura; Figura_Abstract * Next; int Random; int Point; int Max_Combo; int Combo; int Line_Delete; int For_Line; int Bonus; std::stringstream Draw_Int; bool GameOver; };
#endif
Figura_Abstract.h #ifndef FIGURA_ABSTRACT_H #define FIGURA_ABSTRACT_H
#include <allegro5\allegro_primitives.h>
#include <allegro5\allegro5.h> #include <vector> #include "Map.h" #include "zmienne.h"
class Figura_Abstract { public: virtual bool Move( ALLEGRO_KEYBOARD_STATE & keyState, const std::vector < std::vector < DataMap > > & Map ) = 0; virtual bool MoveDown( const std::vector < std::vector < DataMap > > & Map ) = 0; virtual void DrawBlock() = 0; virtual bool Colision( const std::vector < std::vector < DataMap > > & Map ) = 0; virtual void DrawNext() = 0; virtual const std::vector < DataBlock > ReturnDataBlock() = 0; virtual ~Figura_Abstract() { }; protected: int Position; int NumberPosition; std::vector < DataBlock > Figura; };
#endif
Figura_Kwadrat.h #ifndef FIGURA_KWADRAT_H #define FIGURA_KWADRAT_H
#include "Figura_Abstract.h"
class Figura_Kwadrat : public Figura_Abstract { public: bool Move( ALLEGRO_KEYBOARD_STATE & keyState, const std::vector < std::vector < DataMap > > & Map ); bool MoveDown( const std::vector < std::vector < DataMap > > & Map ); void DrawBlock(); bool Colision( const std::vector < std::vector < DataMap > > & Map ); void DrawNext(); const std::vector < DataBlock > ReturnDataBlock(); ALLEGRO_COLOR color1; Figura_Kwadrat() { int a = rand() % 5; switch( a ) { case 0: color1 = al_map_rgb( 24, 230, 38 ); break; case 1: color1 = al_map_rgb( 24, 52, 230 ); break; case 2: color1 = al_map_rgb( 255, 255, 255 ); break; case 3: color1 = al_map_rgb( 253, 0, 253 ); break; case 4: color1 = al_map_rgb( 253, 25, 0 ); break; default: color1 = al_map_rgb( 0, 0, 0 ); } DataBlock abc = { 5, - 1, color1 }; Figura.push_back( abc ); abc.x = 6; abc.y = - 1; Figura.push_back( abc ); abc.x = 5; abc.y = 0; Figura.push_back( abc ); abc.x = 6; abc.y = 0; Figura.push_back( abc ); } };
#endif
Nie mam pojecia co jest grane. Kiedy zmienie na wskaznik int to nie wywala bledu. Pliki Figura_Abstract.h i Figura_Kwadrat.h sprawdzalem kilka razy i wszedzie mam ; . |
|
Monika90 |
» 2014-10-23 22:26:18 Po co masz #include "Map.h" w pliku Figura_Abstract.h? |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-10-24 07:20:56 Po usunieciu #include"Map.h" kompilator nie wywala bledu.
Stary plan programu zakladal dodanie Map do Figura_Abstract i zostawilem to + inne linijki (w komentarzach) tak na wszelki wypadek. Nie spodziewalem sie ze to moze powodowac bledy.
Dziekuje za pomoc ;] |
|
« 1 » |