Рассмотрим:
#ifndef __t__ENTITY_H
#define __t__ENTITY_H
#include "../graphics/animation.h"
namespace t {
namespace entity {
namespace type {
enum Enum { GFX = 0, SFX, PFX, AI, MAX };
}
//template <class T>
class Entity {
public:
Entity(unsigned int, unsigned int, unsigned int);
Entity();
~Entity();
int getPosX() { return m_posX; }
int getPosY() { return m_posY; }
void setPos(int x, int y) { m_posX = x; m_posY = y; }
//TODO: const references
unsigned int getGFXId() { return m_ids[type::GFX]; }
unsigned int getSFXId() { return m_ids[type::SFX]; }
unsigned int getPFXId() { return m_ids[type::PFX]; }
int update(const float);
int draw();
int fetchGraphics();
int fetchSound();
int fetchPhysics();
protected:
//TODO: friend class entity::Handler int reset()
private:
int updatePhysics(const float);
int updateGraphics(const float);
int updateSound(const float);
int m_posX, m_posY;
t::graphics::Animation* m_pAnimation;
float m_lastTime;
unsigned int m_ids[type::MAX];
}; // class Entity
typedef boost::shared_ptr<t::entity::Entity> SPENTITY;
typedef boost::shared_ptr<std::vector<SPENTITY> > SPENTITYS;
} // namespace entity
} // namespace t
#endif // __t__ENTITY_H
В этом коде член "t :: graphics :: Animation * m_pAnimation;"выдает "ошибка: 't :: graphics' не была объявлена", хотя "../graphics/animation.h" выглядит так:
#ifndef __t__ANIMATION_H
#define __t__ANIMATION_H
#include "frame.h"
namespace t {
namespace graphics {
class Animation {
public:
Animation();
Animation(SPFRAMES);
~Animation();
float getLastFrameChange() { return m_lastFrameChange; }
int getCurrentFrameId() { return m_currentFrameId; }
//SPFRAME getCurrentFrame() { return m_spFrames.get()[m_currentFrameId]; }//return m_spFrames[m_currentFrameId]; }
void setCurrentFrame(int val) { m_currentFrameId = val; }
int update(const float);
//int fetchDrawables();
protected:
private:
float m_lastFrameChange;
unsigned int m_currentFrameId;
unsigned int m_oldFrameId;
SPFRAMES m_spFrames;
}; // class Animation
typedef boost::shared_ptr<Animation> SPANIMATION;
typedef boost::shared_ptr<std::vector<SPANIMATION> > SPANIMATIONS;
} // namespace graphics
} // namespace t
#endif // __t__ANIMATION_H