ISO C++ forbids declaration of 'list' with no type

0

Witam serdecznie:
Zajmuję się tworzeniem pewnej gry która polega na przerzucaniu klocków. Plik z deklaracjami klas podstawowych wygląda następująco:

#ifndef PODSTAWOWEKLASY_H
#define PODSTAWOWEKLASY_H

#include <QGraphicsScene>
#include <QGraphicsTextItem>
#include <list>

class Bonus
{
private:
    int s;
public:
    Bonus();
};

class Pole                  // klasa odpowiadajaca za obsluge pojedynczej jednostki z jakiej skladaja sie klocki
{
private:
    int x, y;           // wpolrzedne srodka pola (punkt o wspolrzednych (0,0)) to lewy dolny rog planszy
    bool czy_bonus;     // okresla czy pole zawiera w sobie bonus
    Bonus bon;          // ewentualny bonus (domyslnie false, tzn standardowe pole nie ma w sobie bonusa)

public:
    Pole(int x, int y);                         // konstruktor pola
    void Usun();                                     // destruktor
    int PodajWspolrzednaX();                    // nazwa funkcji mowi sama za siebie 
    int PodajWspolrzednaY();                    //              -||-
    void Przesun(int dx, int dy);               // przesuwa pole o dx pol w poziomie i dy pol w pionie
    bool Czy_ma_bonus();                        // zwraca informacje czy to pole posiada bonus
    Bonus PodajBonus();                         // zwraca bonus zawarty w polu
    void UmiescBonus(Bonus bon);                // umieszcza bonus w klocku

};

class Klocek                // klasa obslugujaca grupe pol polaczonych w jeden klocek
{
private:
    list<Pole*> lista_pol;          // lista pol z ktorych zlozony jest klocek
    int sx, sy;                     // wspolrzedne "srodka" klocka (srodek to punkt w klocku wyrozniony przez osobe projektujaca klocek. Obrot klocka jest wykonywany wokol srodka.
 //   Material material_klocka;   // material z ktorego zrobiony jest klocek

public:
    Klocek(list<Pole*> lista_pol, int sx, int sy, Material material_klocka);    // konstruktor
    void Usun();                                                                               // destruktor
    list<Pole*> PodajListePol();                                                // zwraca liste pol z ktorych sklada sie klocek
    Material PodajMaterial();                                                   // zwraca material z ktorego zrobiony jest klocek
    void Przesun(int dx, int dy);                                               // przesuwa klocek o dx pol w poziomie i dy pol w pionie
    void UsunPole(int x, int y);                                                // usuwa pole o podanych wspolrzednych
    void ObrocWLewo();                                                          // obraca klocek w lewo  (wokol srodka)
  void ObrocWPrawo();                                                         // obraca klocek w prawo (wokol srodka)
    QPainter NarysujKlocek();

}

#endif

jednak w miejscu:

class Klocek
{
private:
list<Pole*> lista_pol;

wyskakuje błąd:

error: ISO C++ forbids declaration of 'list' with no type

Czy mógłby ktoś wytłumaczyć o co chodzi w tym błędzie i jak go naprawić? Nigdy wcześniej się z takim błędem nie spotkałem.

Pozdrawiam serdecznie

0

Następnym razem kod daj w tagi cpp!

class Klocek                
{
private:
    std::list<Pole*> lista_pol;

    (...)
};

Zapomniałeś o przestrzeni nazw.

0

Ogromne dzięki,

Dzięki Twojej odpowiedzi uświadomiłem sobie, że można też napisać po prostu:

using namespace std; 
0

W nagłówku? Niespecjalnie można...

0

Napisałem na samym początku pliku nagłówkowego "podstawoweKlasy.cpp" i podziałało. Dlaczego miałoby nie działać?

0

można, ale się nie powinno, gdyż nagłówki są potem 'wklejane' przez preprocesor do innych plikow z kodem i sobie niesamowicie ten inny-kod zasmiecasz usingami. w efekcie za 5-9 plikow mozesz nagle dostawac bledy ze klasa X czy funkcja Y juz istnieje, mimo ze nigdzie w tym 5-czy-9tym pliku dubla nie widac

1 użytkowników online, w tym zalogowanych: 0, gości: 1