Jeden enum w kilku plikach
Ostatnio zmodyfikowano 2015-11-29 15:32
marcolo2307 Temat założony przez niniejszego użytkownika |
Jeden enum w kilku plikach » 2015-11-27 21:13:49 Cześć! Mam mniej więcej taki kod: #include "DekEnuma.hpp" #include "Main.hpp"
#include "system.hpp"
class Klasa { public: MojEnum mojEnum; };
Otrzymuję błąd "'MojEnum' does not a type". Szukałem w internecie, ale nie znalazłem mojego przypadku. W przypadku klas po prostu piszę "class Klasa;", ale z enum (chyba) tak nie mogę. Macie jakiś pomysł? |
|
pekfos |
» 2015-11-27 21:21:53 Dołączaj DekEnuma.hpp (a nie system.hpp) w Main.hpp. Dodatkowo, zabezpiecz nagłówki przed wielokrotnym dołączaniem. |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2015-11-27 21:25:05 Mam zabezpieczone, uznałem że w tym przykładowym tylko zmniejszy to czytelność.
Próbowałem z dołączeniem DekEnuma.hpp, było to samo. Zresztą w teorii to nie powinno nic zmieniać, bo dołączam to pośrednio przez system.hpp. |
|
pekfos |
» 2015-11-27 21:25:46 Podaj kompletny kod (związany z problemem) i log kompilacji. |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2015-11-27 21:29:41
#include "mapeditor.hpp" #include "tiles.hpp"
[ / cpp ]
[ cpp ] #ifndef mapeditor_hpp #define mapeditor_hpp
#include "../system.hpp"
class cTiles; class cTile;
class cMapEditor { private: MAP_LEVEL PoziomMapy; };
class cTile; class cRoof; class cUnderground; class cVentilation;
enum MAP_LEVEL { GROUND = 0, UNDERGROUND = - 1, VENTILATION = 1, ROOF = 2 };
Niepotrzebne elementy usunąłem. Katalogi w #include się zgadzają. |
|
pekfos |
» 2015-11-27 21:48:53 To nie jest kompletny kod i nie podałeś logów. |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2015-11-27 21:52:48 Log: ||=== Build: Debug in Prison Escape (compiler: GNU GCC Compiler) ===| C:\Users\marco\Desktop\Prison Escape Alpha 0.01\data\buttons\..\mapeditor\mapeditor.hpp|38|error: 'MAP_LEVEL' does not name a type| ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Kompletny kod to już tak z 20 plików... Dodałem chyba wszystko co jest potrzebne. Zaraz dodam więcej. Edit: System.hpp: #ifndef system_hpp #define system_hpp
#define GAME_NAME "Prison Escape" #define GAME_VERSION "Alpha 0.01"
#include "SFML/Audio.hpp" #include "SFML/Graphics.hpp"
#include <iostream> #include <string> #include <fstream>
#include "mapeditor/mapeditor.hpp" #include "tiles/tiles.hpp"
#endif
Tiles.hpp: #ifndef tiles_hpp #define tiles_hpp
#include "../system.hpp"
#define ILOSC_KAFELKOW 10 #define ILOSC_ITEMOW 10
class cTile; class cRoof; class cUnderground; class cVentilation;
enum MAP_LEVEL { GROUND = 0, UNDERGROUND = - 1, VENTILATION = 1, ROOF = 2 };
#endif
Plik mapeditor.hpp: #ifndef mapeditor_hpp #define mapeditor_hpp
#include "../system.hpp"
class cMapEditor { private: float MAP_WIDTH; float MAP_HEIGHT; MAP_LEVEL PoziomMapy; cTile ** Map; public: };
#endif
Edit 2: Poczytałem jeszcze trochę o enumach i się dowiedziałem, że w zwykłym C++ nie ma możliwości na stworzenie kilku deklaracji, tak jak to jest w przypadku klas. Teraz już kompletnie nie wiem co zrobić :/ |
|
pekfos |
» 2015-11-27 23:25:16 #include "mapeditor/mapeditor.hpp" #include "tiles/tiles.hpp"
|
Zamień kolejność. To zdaje się obejdzie problem wywoływany w kodzie, którego nie podałeś. Nagłówki masz źle napisane. |
|
« 1 » 2 3 |