J'ai tapé "class CMap : public CPlayer" pour la classe CMap.
une classe CPlayer qui contient les données du joueur, avec entre autre une struct "tsDataPlayer".
Dans la méthode LoadMap() j'ai bien accès aux membre de CPlayer. Tout compile, et en mode pas à pas je vois bien les variable de la struct changer. Mais des que je quitte la méthode LoadMap (), tous les membres de la struct valent 0.
Tu sais qu'en C++ une struct et une classe sont identiques (mise à part le niveau de visibilité par défaut). Donc tu aurais pu ajouter des méthodes directement dans "tsDataPlayer".
Ou est cette struct ? Est-elle passé quelque part, par copie ? Si c'est le cas, tu modifies sûrement une copie de ton véritable objet.
typedef struct tsDataPlayer
{
int numPlayer;
char* nomPlayer;
float positionCamPlayerX; // position du joueur en X Cam
float positionCamPlayerY; // position du joueur en Y Cam
float positionCamPlayerZ; // position du joueur en Z Cam
float angleCamPlayerX;// angle du joueur en X Cam
float angleCamPlayerY;// angle du joueur en Y Cam
float angleCamPlayerZ;// angle du joueur en Z Cam
float positionPlayerStartX; // position du joueur en X Cam
float positionPlayerStartY; // position du joueur en Y Cam
float positionPlayerStartZ; // position du joueur en Z Cam
float anglePlayerStartX;// angle du joueur en X Cam
float anglePlayerStartY;// angle du joueur en Y Cam
float anglePlayerStartZ;// angle du joueur en Z Cam
int vieRestante;
int vieMax;
int combiRestante;
int combiMax;
int numObjetAction; // le numéro d'objet que le joueur veut "actionner"
float distancePlayerToObjetAction; // la distance qui sépare le joeur de l'objet souhaité "actionner"
};
typedef struct tsDataPlayer
struct tsDataPlayer
char* nomPlayer;
std::string nomPlayer;
class CMap_HL2 { public: //fonctions CMap_HL2(); CMap_HL2(std::string nameMap); ~CMap_HL2(); bool LoadMap (std::string OptionalPathToTextureRoot,std::string OptionalPathToModelRoot,float TextureMapScale,int OCMode); std::string getMsgError (void); //variables static enum {Normal, AllObjects}; private: // structures struct tsDataWorld { char* OCMode; int FPS; int POLYS; int totalObjets; int totalLimbs; string nomMap3DW; }; // autre variables bool m_LoadFailed; std::string m_MsgError; std::string m_NameMapLoad; // création des vecteurs perso ! vector<tsDataWorld> m_vDataWorld; // poointeur sur un objet du joueur! CPlayer_HL2 * o_Player; };
CMap_HL2::CMap_HL2(string nameMap) : m_NameMapLoad(nameMap) { o_Player = new CPlayer_HL2; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question