Je cherche une sollution compatible VC++ et gcc

Folays :
Je suis peut etre hors-sujet mais regarde ce que tu pourrais avec avec le mot cle "volatile"
Il me semble qu'il permet de faire en sorte que le compilno ne change rien pour des raisons d'optimisations afin de pouvoir permettre aux dev de bidouiller.
JackosKing
: Si Si le compilo a droit d'ordonner les données d'une structure
Heu en fait CVector sera utiliser pour afficher une map en 3D ainsi que des models md2.J'ai gagné
Je me soucis pas trop de l'optimisation (je perde surment en vitesse en utilisant les classes pour ca..)si tes classes sont propres, elles seront tout aussi rapides que le même code en C (en tous cas au moins pour une classe simple comme celle-ci).
mais de la lisibilité du code (c'est pour mon ecole), et je prefere voir V3=2*V1+... que 3 lignes sur x, y, z.Oué, d'où l'intéret d'implémenter les 3 opérateurs que je t'ai dit :
Euh, non. En C, les membres (hors bitfield) de la structure doivent avoir des adresses qui augmentent dans l'ordre où ils sont déclarés. Autrement dit, il peut y avoir du padding, mais pas de réordonnancement.
nitroC'est quoi un groupe d'accès ?
: Idem en C++ pour les membres (hors static) qui appartiennent au même groupe d'accès. Par contre différents groupes d'accès peuvent être réordonnés.
typedef struct { int Ident; // Identifiant : "IDP2" int Version; // version du format : 8 int SkinWidth; // Largeur texture int SkinHeight; // Hauteur texture int FrameSize; // Taille d'une frame en octets int NbrSkin; // Nombre de skins int NbrVertex; // Nombre de vertexes par frame int Nbrst; // Nombre de coordonnées de texture int NbrTriangle; // Nombre de triangles int NbrGLCmd; // Nombre de commandes opengl int NbrFrame; // Nombre de frames int OffSkin; // Offset données skins int Offst; // Offset données coordonnées de texture int OffTriangle; // Offset données triangles int OffFrame; // Offset données frames int OffGLCmd; // Offset données commandes OpenGL int OffEnd; // Offset fin de fichier }SMd2Header; fstream File; File.open(_pMd2FileName, ios::in | ios::binary); if (File.fail()) { cout<<"Md2 File: Can't open "<<_pMd2FileName<<endl; return false; } File.read((char *)&Md2Header, sizeof(SMd2Header) ); if( (Md2Header.Version != MD2_VERSION) || Md2Header.Ident != MD2_IDENT ) { cout<<"Md2 Format: "<<_pMd2FileName<<" Bad version.PADDING("<<sizeof(SMd2Header)-17*sizeof(int)<<")"<<endl; return false; }