hello.
I'm trying to make a CWorld class that can only be constructed once, now Elysia told me the approach yesterday, still I forgot all the details so I've been mindless hacking for sometime, with only help from intellisense and some from cprogramming.com, still I ain't getting it right...
Code:
class CWorld
{
private:
hgeVector m_hVec_ScreenSize;
float m_Gravity;
boost::array<std::string, 1> m_str_mapNames;
void SetMapNames();
CWorld(const float gravity_);
public:
hgePolygonMap* m_map;
friend class CWorld_Fac;
// HGE needed functions e.g. the creation of the world...
inline void SetStates();
static bool FrameFunc();
static bool RenderFunc();
};
class CWorld_Fac {
public:
CWorld_Fac::CWorld_Fac(const float gravity_) {
static CWorld world_(gravity_);
}
};
Those are the classes I have, now I'm supposed to be able to create many CWorld_Fac classes, still it will always lead to the same CWorld class, since it's static, also I have this code in main()
Code:
world = new CWorld_Fac(0.5f);
now this should be having the right info, and thus making CWorld get the right info first time...
here is the call that fails
Code:
CWorld_Fac m_world;
// this fails
CCharacter(std::string entClass_) : CEntity(HEL_MIDDLE2, false), m_world(0) { m_world.m_map->RegisterEntityClass(entClass_, this); }
now here I set m_world argument to 0, this shouldn't change anything since the CWorld constructor was static in CWorld_fac, right?
Hope I was able to explain correctly, and thanks in advance!