Problemy z #include
Ostatnio zmodyfikowano 2016-05-31 12:36
Blonnik Temat założony przez niniejszego użytkownika |
Problemy z #include » 2016-05-30 20:55:34 Cześć Staram się przenieść jedną z gier planszowych na kompa i mam taki oto problem: Mimo #include "Player.h" klasa Player jest nieznana - error: 'Player' does not name a type. #ifndef WORLD_H #define WORLD_H
#include <SFML/Graphics.hpp> #include <SFML/System.hpp>
#include <array>
#include "ResourceHolder.h" #include "SceneNode.h" #include "SpriteNode.h" #include "Player.h"
namespace Textures { enum ID { Backgorund, Gizah }; }
class World : private sf::NonCopyable { public: World( sf::RenderWindow & window ); void update( sf::Time dt ); void draw(); private: void loadTextures(); void buildScene(); private: enum Layer { Backgorund, Player, LayerCount }; private: sf::RenderWindow mWindow; sf::View mWorldView; ResourceHolder < sf::Texture, Textures::ID > mTextures; SceneNode mSceneGraph; std::array < SceneNode *, LayerCount > mSceneLayers; Player * mPlayer; };
#endif
I klasa Player #ifndef PLAYER_H #define PLAYER_H
#include <SFML/Graphics.hpp> #include "Entity.h" #include "City.h"
class Player : public Entity { public: Player( City c ); private: City mCity; private: virtual void drawCurrent( sf::RenderTarget &, sf::RenderStates ) const; };
#endif
Próbowałem dodać deklarację class Player w World , ale nie pomaga. Gdzieś czytałem o czymś takim jak cmake file w którym ustala się kolejność, ale nie wiele o tym wiem (nic). Dodaję jeszcze drzewko pokazujące co include'uje co: http://www.speedyshare.com/xX9b8/graph.png Jakieś pomysły ? :/ |
|
michal11 |
» 2016-05-30 21:13:57 Jak z world.h wyrzucisz #include "Player.h" i dodasz class Player; to nie pomaga ? |
|
Blonnik Temat założony przez niniejszego użytkownika |
» 2016-05-30 23:14:28 Nie pomaga |
|
pekfos |
» 2016-05-30 23:21:12 Podaj cały kod. |
|
michal11 |
» 2016-05-30 23:32:35 Co masz w #include "City.h" ? |
|
Blonnik Temat założony przez niniejszego użytkownika |
» 2016-05-31 10:36:53 #ifndef CITY_H #define CITY_H
#include <SFML/Graphics.hpp>
class Player;
class City { public: City( sf::Texture t ); public: friend class Player; private: void draw( sf::RenderTarget & target, sf::RenderStates states ) const; private: sf::Sprite mSprite; };
#endif
|
|
darko202 |
» 2016-05-31 12:36:55 1. deklaracja zaprzyjaźnienie wygląda np. https://pl.wikipedia.org/wiki/Klasa_zaprzyja%C5%BAnionatzn. jest deklaracja zapowiadająca klasę Player deklaracja zaprzyjaźnienia, ale nie ma rozwinięcia klasy zdefiniowanej w deklaracji zapowiadającej skąd kompilator ma ja wziąć ? wyrzuciłbym tą deklaracje zapowiadająca a dodał plik nagłówkowy player.h 2. >>Mimo #include "Player.h" klasa Player jest nieznana - error: 'Player' does not name a type. #ifndef WORLD_H #define WORLD_H #include (...) Przepraszam, nie doczytałem Twojego pytania. ale jak gdzieś utkniesz i nie masz czasu to trzeba zacząć jeszcze raz. a. wymusić przebudowę całego projektu - czasami kompilator upiera się przebudowywać tylko niektóre pliki, które jego zdaniem uległy zmianie. b. nowy projekt + dodawanie kolejnych klas, ale nie poprzez przenoszenie całych plików c. niewidoczny znak (czasami gdzieś się pojawia - ot coś nacisnęliśmy) - kiedyś miałem podobny problem i coś było inaczej - zrobiłem zgodnie z p. b i problem zniknął potem otwierając jakimś innym edytorem i bawiąc się standardami znalazłem ten dodatkowy znak |
|
« 1 » |