Je cherche une sollution compatible VC++ et gcc
merciFolays :
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;
}
