Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Wskaznik na klase abstrakcyjna

Ostatnio zmodyfikowano 2014-10-24 07:20
Autor Wiadomość
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
C/C++
#ifndef MAP_H
#define MAP_H

//PLIK ZE ZMIENNYMI
#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:
   
    //WYPISUJE MAPE
    void Draw_Map();
    //KOLIZJA (DODANIE DO MAPY FIGURY)
    bool Colision();
    //SPRAWDZAMY CZY JEST LINIA DO SKASOWANIA
    bool Check_Line();
    //PRZESUWAMY LINIE W DOL
    void Down_Line();
    //ZWRACAMY MAPE DO OBLICZEN DLA FIGURY
    ///const std::vector< std::vector< DataMap > > Send_Map() ;
   
    //PRZYJAZN Z KLASAMI EKRANU
    friend class Game_Screen;
   
    Map( void )
    {
        For_Line = 100;
        Point = 0;
        Combo = 0;
        Bonus = 10;
        Line_Delete = 0;
        Max_Combo = 0;
        GameOver = false;
       
        //REZERWUJEMY WIELKOSC MAPY
        Screen_Map.reserve( 31 );
       
        for( int i = 0; i < 31; i++ )
             Screen_Map[ i ].reserve( 10 );
       
        //USTAWIAMY WARTOSC RYSOWANIA NA FALSE
        for( int y = 0; y < 31; y++ )
        for( int x = 0; x < 10; x++ )
             Screen_Map[ y ][ x ].Draw = false;
       
        //LOSUJEMY FIGURY
        Random = rand() % 2;
       
        switch( Random )
        {
        case 0:
           
            Figura = new Figura_Kwadrat;
            break;
           
        case 1:
           
            //Figura = new Figura_Linia_Duza ;
            break;
           
        }
       
        Random = rand() % 2;
       
        switch( Random )
        {
        case 0:
           
            Next = new Figura_Kwadrat;
            break;
           
        case 1:
           
            //Next = new Figura_Linia_Duza ;
            break;
           
        }
       
    }
   
private:
   
    //MAPA
    std::vector < std::vector < DataMap > > Screen_Map;
   
    //FIGURA KTORA RUSZAMY ORAZ NASTEPNA
    Figura_Abstract * Figura; // TU JEST PROBLEM
    Figura_Abstract * Next; // TU JEST PROBLEM
    //RANDOM DLA FIGUR
    int Random;
   
    //DANE DO WYPISANIA NA EKRANIE
    int Point;
    int Max_Combo;
    //POMOCNE COMBO
    int Combo;
   
    //ILOSC SKASOWANYCH LIN (OD TEGO ZALEZY JAK SZYBKO PORUSZA SIE GRA)
    int Line_Delete;
   
    //ILOSC PUNKTOW JAKIE SIE OTRZYMUJE
    int For_Line;
    int Bonus;
   
    //ZMIANA INT NA STRING
    std::stringstream Draw_Int;
   
    //ZMIENNA KONCA GRY
    bool GameOver;
   
};

#endif

Figura_Abstract.h
C/C++
#ifndef FIGURA_ABSTRACT_H
#define FIGURA_ABSTRACT_H

//#pragma once
#include <allegro5\allegro_primitives.h>
//#include <allegro5/allegro_image.h>
//#include <allegro5\allegro_font.h>
//#include <allegro5\allegro_ttf.h>
#include <allegro5\allegro5.h>
#include <vector>
#include "Map.h"
#include "zmienne.h"

class Figura_Abstract
{
public:
   
    //RUCH KLOCKIEM
    virtual bool Move( ALLEGRO_KEYBOARD_STATE & keyState, const std::vector < std::vector < DataMap > > & Map ) = 0;
    //AUTOMATYCZNY RUCH KLOCKIEM W DOL
    virtual bool MoveDown( const std::vector < std::vector < DataMap > > & Map ) = 0;
    //RYSUJEMY KLOCEK NA MAPIE  ???????
    virtual void DrawBlock() = 0;
    //KOLIZJA KLOCKA
    virtual bool Colision( const std::vector < std::vector < DataMap > > & Map ) = 0;
    //RYSUJEMY NASTEPNE KLOCKI
    virtual void DrawNext() = 0;
    //ZWRACA KOLOR I POZYCJE BLOKOW
    virtual const std::vector < DataBlock > ReturnDataBlock() = 0;
   
    //VIRTUALNY DESTRUKTOR
    virtual ~Figura_Abstract() { };
   
protected:
   
    //POZYCJA KLOCKA (LOSOWANA PRZY TWORZENIU)
    int Position;
    //ILOSC POZYCJI
    int NumberPosition;
    //POZYCJA KAZDEGO KLOCKA
    std::vector < DataBlock > Figura;
   
};

#endif

Figura_Kwadrat.h
C/C++
#ifndef FIGURA_KWADRAT_H
#define FIGURA_KWADRAT_H
//#pragma once
#include "Figura_Abstract.h"

///  0 1
///  2 3

class Figura_Kwadrat
    : public Figura_Abstract
{
public:
   
    //RUCH KLOCKIEM
    bool Move( ALLEGRO_KEYBOARD_STATE & keyState, const std::vector < std::vector < DataMap > > & Map );
    //AUTOMATYCZNY RUCH KLOCKIEM W DOL
    bool MoveDown( const std::vector < std::vector < DataMap > > & Map );
    //RYSUJEMY KLOCEK NA MAPIE  ???????
    void DrawBlock();
    //KOLIZJA KLOCKA
    bool Colision( const std::vector < std::vector < DataMap > > & Map );
    //RYSUJEMY NASTEPNE KLOCKI
    void DrawNext();
    //ZWRACA KOLOR I POZYCJE BLOKOW
    const std::vector < DataBlock > ReturnDataBlock();
   
    //POMOCNA ZMIENNA
    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 ; .
P-119274
Monika90
» 2014-10-23 22:26:18
Po co masz #include "Map.h" w pliku Figura_Abstract.h?
P-119277
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 ;]
P-119281
« 1 »
  Strona 1 z 1