Dobrý den, tvořím herní engine a chtěl bych použít několik handle pro třídy objektů jako globální statické ukazatele. Tyto ukazatele tvořím hned pod jejich třídou, které z kterých nejprve vytvořím nulový ukazatel. (př1) Potom v konstruktoru té třídy inicializuji ten konstruktor, aby ukazoval na tu instanci té třídy. (př2)
Problém je, že ukazatel má inicializovanou adresu pouze v tom bloku, kde byl vytvořen. V ostatních blocích je nulový. (kdybych se dopustil nějaké špatné terminologie, tak mě když tak opravte ;-))
př 1:
class GameObjectsStack
{
public:
GameObjectsStack();
~GameObjectsStack();
void Init(ID3D11Device* device, ID3D11DeviceContext* dc, Camera *cam, UINT numObjects = 32, UINT numInstances = 32);
void Update();
void Render();
int CreateObject(GameObject *object);
int CreateInstances(int objID);
void DestroyObjectByID(int id);
void DestroyInstanceByID(int id);
GameObject* GetGameObjectByID(int id) { return gameObjects[id]; }
GameInstance* GetGameInstanceByID(int id) { return gameInstances[id]; }
private:
ID3D11Device* mDevice;
ID3D11DeviceContext* mDC;
Camera *mCam;
IDStack *idObjectStack;
IDStack *idInstanceStack;
std::vector<GameObject*> gameObjects;
std::vector<GameInstance*> gameInstances;
int m_numObjects;
int m_numInstances;
};
static GameObjectsStack *GameObjectStackHandle = 0;
#endif //GAME_OBJECT
př2:
GameObjectsStack::GameObjectsStack()
{
GameObjectStackHandle = this;
}