Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour chaque
virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8 qu'une fois
il me semble.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour chaque
virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8 qu'une fois
il me semble.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour chaque
virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8 qu'une fois
il me semble.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour chaque
virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8 qu'une fois
il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois par objet mais
pour un objet virtuel (pardon pour cet abus de langage) contenant 2 objets
virtuels on paye (logiquement) +24.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me résigner sur ce point
et de bien repenser la structure de mes objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour chaque
virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8 qu'une fois
il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois par objet mais
pour un objet virtuel (pardon pour cet abus de langage) contenant 2 objets
virtuels on paye (logiquement) +24.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me résigner sur ce point
et de bien repenser la structure de mes objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour chaque
virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8 qu'une fois
il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois par objet mais
pour un objet virtuel (pardon pour cet abus de langage) contenant 2 objets
virtuels on paye (logiquement) +24.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me résigner sur ce point
et de bien repenser la structure de mes objets.
Saurais-tu où je peux trouver une description complète de la
structure d'une classe virtuelle s'il te plait ?
Dans la doc de ton compilateur : il n'y a pas de représentation standard, ca
Saurais-tu où je peux trouver une description complète de la
structure d'une classe virtuelle s'il te plait ?
Dans la doc de ton compilateur : il n'y a pas de représentation standard, ca
Saurais-tu où je peux trouver une description complète de la
structure d'une classe virtuelle s'il te plait ?
Dans la doc de ton compilateur : il n'y a pas de représentation standard, ca
Bon, il me semble que je n'ai pas d'autre choix que de me résigner sur ce point
et de bien repenser la structure de mes objets.
Ben le polymorphisme dynamique, il faut le payer à un moment ou
à un autre. on peut par exemple décider de stocker le type réel
de l'objet dans un type énuméré (8 bits si tu as moins de 256
types), et de se gérer le polymorphisme à la main.
Mais faut être rigoureux pour pas se planter.
Ca peut peut-être se simplifier à grand coups de templates,
mais je ne me lancerais pas dans ça sans une bonne raison.
Bon, il me semble que je n'ai pas d'autre choix que de me résigner sur ce point
et de bien repenser la structure de mes objets.
Ben le polymorphisme dynamique, il faut le payer à un moment ou
à un autre. on peut par exemple décider de stocker le type réel
de l'objet dans un type énuméré (8 bits si tu as moins de 256
types), et de se gérer le polymorphisme à la main.
Mais faut être rigoureux pour pas se planter.
Ca peut peut-être se simplifier à grand coups de templates,
mais je ne me lancerais pas dans ça sans une bonne raison.
Bon, il me semble que je n'ai pas d'autre choix que de me résigner sur ce point
et de bien repenser la structure de mes objets.
Ben le polymorphisme dynamique, il faut le payer à un moment ou
à un autre. on peut par exemple décider de stocker le type réel
de l'objet dans un type énuméré (8 bits si tu as moins de 256
types), et de se gérer le polymorphisme à la main.
Mais faut être rigoureux pour pas se planter.
Ca peut peut-être se simplifier à grand coups de templates,
mais je ne me lancerais pas dans ça sans une bonne raison.
Dans mon appli je travaille avec des BlobTrees qui sont des arbres
CSG enrichis, c'est-à-dire qu'un objet (3D) est défini par des
mélanges, unions, intersections et différences de primitiives
géométriques. Ces primitives sont composés d'un squelette géométrique et
d'une peau
implicite (pour les mélanges).
Chaque squelette est composé de points, vecteurs et quelques
grandeurs. Comme les modèles sont animés, en fait il s'agit de
trajectoires,
vecteurs dépendants du temps et grandeurs variables.
Et enfin si je me restreint aux trajectoires j'ai besoin que
certaines soient définies relativement à d'autres (gestion et édition
simplifiée) donc j'utilise beaucoup des compositions de trajectoires,
vecteurs et gandeurs. Si on ajoute à ça le fait que ces modèles sont à
niveaux de détails,
finalement la structure est assez importante mais surtout elle ne
contient que des objets qui sont des instances de classes virtuelles
(de BlobTrees, de primitives, de squelettes, des trajectoires, ...).
Et comme ce qui m'intéresse vraiment est de gérer plusieurs objets et
de faire des transformations entre eux...
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour
chaque virtual.
Ce qui est un peu curieux, c'est que tous ces objets "primitifs" qui sont
Dans mon appli je travaille avec des BlobTrees qui sont des arbres
CSG enrichis, c'est-à-dire qu'un objet (3D) est défini par des
mélanges, unions, intersections et différences de primitiives
géométriques. Ces primitives sont composés d'un squelette géométrique et
d'une peau
implicite (pour les mélanges).
Chaque squelette est composé de points, vecteurs et quelques
grandeurs. Comme les modèles sont animés, en fait il s'agit de
trajectoires,
vecteurs dépendants du temps et grandeurs variables.
Et enfin si je me restreint aux trajectoires j'ai besoin que
certaines soient définies relativement à d'autres (gestion et édition
simplifiée) donc j'utilise beaucoup des compositions de trajectoires,
vecteurs et gandeurs. Si on ajoute à ça le fait que ces modèles sont à
niveaux de détails,
finalement la structure est assez importante mais surtout elle ne
contient que des objets qui sont des instances de classes virtuelles
(de BlobTrees, de primitives, de squelettes, des trajectoires, ...).
Et comme ce qui m'intéresse vraiment est de gérer plusieurs objets et
de faire des transformations entre eux...
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour
chaque virtual.
Ce qui est un peu curieux, c'est que tous ces objets "primitifs" qui sont
Dans mon appli je travaille avec des BlobTrees qui sont des arbres
CSG enrichis, c'est-à-dire qu'un objet (3D) est défini par des
mélanges, unions, intersections et différences de primitiives
géométriques. Ces primitives sont composés d'un squelette géométrique et
d'une peau
implicite (pour les mélanges).
Chaque squelette est composé de points, vecteurs et quelques
grandeurs. Comme les modèles sont animés, en fait il s'agit de
trajectoires,
vecteurs dépendants du temps et grandeurs variables.
Et enfin si je me restreint aux trajectoires j'ai besoin que
certaines soient définies relativement à d'autres (gestion et édition
simplifiée) donc j'utilise beaucoup des compositions de trajectoires,
vecteurs et gandeurs. Si on ajoute à ça le fait que ces modèles sont à
niveaux de détails,
finalement la structure est assez importante mais surtout elle ne
contient que des objets qui sont des instances de classes virtuelles
(de BlobTrees, de primitives, de squelettes, des trajectoires, ...).
Et comme ce qui m'intéresse vraiment est de gérer plusieurs objets et
de faire des transformations entre eux...
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en plus pour
chaque virtual.
Ce qui est un peu curieux, c'est que tous ces objets "primitifs" qui sont
Aurélien Barbier-Accary wrote:Saurais-tu où je peux trouver une description complète de la
structure d'une classe virtuelle s'il te plait ?
Dans la doc de ton compilateur : il n'y a pas de représentation standard, ca
dépend du compilo.
Arnaud
Aurélien Barbier-Accary wrote:
Saurais-tu où je peux trouver une description complète de la
structure d'une classe virtuelle s'il te plait ?
Dans la doc de ton compilateur : il n'y a pas de représentation standard, ca
dépend du compilo.
Arnaud
Aurélien Barbier-Accary wrote:Saurais-tu où je peux trouver une description complète de la
structure d'une classe virtuelle s'il te plait ?
Dans la doc de ton compilateur : il n'y a pas de représentation standard, ca
dépend du compilo.
Arnaud
Ce qui est un peu curieux, c'est que tous ces objets "primitifs" qui sont
essentiellement des blocs de données, aient tous des méthodes virtuelles.
D'ordinaire, ces sont plutôt les objets de type "identités" qui ont des
méthodes virtuelles, plutôt que les objets de type "valeur". Toutes ces
classes ont des types dérivés? Bon, ceci-dit, je ne connais rien à ton
domaine d'application....
Arnaud
Ce qui est un peu curieux, c'est que tous ces objets "primitifs" qui sont
essentiellement des blocs de données, aient tous des méthodes virtuelles.
D'ordinaire, ces sont plutôt les objets de type "identités" qui ont des
méthodes virtuelles, plutôt que les objets de type "valeur". Toutes ces
classes ont des types dérivés? Bon, ceci-dit, je ne connais rien à ton
domaine d'application....
Arnaud
Ce qui est un peu curieux, c'est que tous ces objets "primitifs" qui sont
essentiellement des blocs de données, aient tous des méthodes virtuelles.
D'ordinaire, ces sont plutôt les objets de type "identités" qui ont des
méthodes virtuelles, plutôt que les objets de type "valeur". Toutes ces
classes ont des types dérivés? Bon, ceci-dit, je ne connais rien à ton
domaine d'application....
Arnaud
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en
plus pour chaque virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois
par objet mais pour un objet virtuel (pardon pour cet abus de
langage) contenant 2 objets virtuels on paye (logiquement)
+24.
Si on répète les appartenances, voila ce que j'entendais par
8+8+...+8
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de mes
objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en
plus pour chaque virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois
par objet mais pour un objet virtuel (pardon pour cet abus de
langage) contenant 2 objets virtuels on paye (logiquement)
+24.
Si on répète les appartenances, voila ce que j'entendais par
8+8+...+8
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de mes
objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en
plus pour chaque virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois
par objet mais pour un objet virtuel (pardon pour cet abus de
langage) contenant 2 objets virtuels on paye (logiquement)
+24.
Si on répète les appartenances, voila ce que j'entendais par
8+8+...+8
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de mes
objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en
plus pour chaque virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois
par objet mais pour un objet virtuel (pardon pour cet abus de
langage) contenant 2 objets virtuels on paye (logiquement)
+24.
Si on répète les appartenances, voila ce que j'entendais par
8+8+...+8
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de mes
objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en
plus pour chaque virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois
par objet mais pour un objet virtuel (pardon pour cet abus de
langage) contenant 2 objets virtuels on paye (logiquement)
+24.
Si on répète les appartenances, voila ce que j'entendais par
8+8+...+8
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de mes
objets.
Bref ça coûte finalement assez cher ces 8+8+...+8 octets en
plus pour chaque virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une fois
par objet mais pour un objet virtuel (pardon pour cet abus de
langage) contenant 2 objets virtuels on paye (logiquement)
+24.
Si on répète les appartenances, voila ce que j'entendais par
8+8+...+8
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta variable,
mais passer par une fonction qui va la recalculer systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps.
Ah la la, on veut toujours le beurre, l'argent ... ;-p
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de mes
objets.
Aurélien Barbier-Accary a
écrit : >Bref ça coûte finalement assez cher ces 8+8+...+8
octets en plus pour chaque >virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une
fois par objet mais pour un objet virtuel (pardon pour cet
abus de langage) contenant 2 objets virtuels on paye
(logiquement) +24.
Et oui.Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta
variable, mais passer par une fonction qui va la recalculer
systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps. Ah la la, on veut
toujours le beurre, l'argent ... ;-p
Ben, le compromis mémoire/CPU est un très vieil équilibre en
info.Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de
mes objets.
Ben le polymorphisme dynamique, il faut le payer à un moment
ou à un autre. on peut par exemple décider de stocker le type
réel de l'objet dans un type énuméré (8 bits si tu as moins de
256 types), et de se gérer le polymorphisme à la main.
Mais faut être rigoureux pour pas se planter.
Ca peut peut-être se simplifier à grand coups de templates,
mais je ne me lancerais pas dans ça sans une bonne raison.
Aurélien Barbier-Accary <nospam_star-shoot_mapson@fr.st> a
écrit : >Bref ça coûte finalement assez cher ces 8+8+...+8
octets en plus pour chaque >virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une
fois par objet mais pour un objet virtuel (pardon pour cet
abus de langage) contenant 2 objets virtuels on paye
(logiquement) +24.
Et oui.
Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta
variable, mais passer par une fonction qui va la recalculer
systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps. Ah la la, on veut
toujours le beurre, l'argent ... ;-p
Ben, le compromis mémoire/CPU est un très vieil équilibre en
info.
Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de
mes objets.
Ben le polymorphisme dynamique, il faut le payer à un moment
ou à un autre. on peut par exemple décider de stocker le type
réel de l'objet dans un type énuméré (8 bits si tu as moins de
256 types), et de se gérer le polymorphisme à la main.
Mais faut être rigoureux pour pas se planter.
Ca peut peut-être se simplifier à grand coups de templates,
mais je ne me lancerais pas dans ça sans une bonne raison.
Aurélien Barbier-Accary a
écrit : >Bref ça coûte finalement assez cher ces 8+8+...+8
octets en plus pour chaque >virtual.
+8 pour chaque virtual ? Normalement, on ne paye ce +8
qu'une fois il me semble.
je me suis mal exprimé, bien sûr qu'on ne paye +8 qu'une
fois par objet mais pour un objet virtuel (pardon pour cet
abus de langage) contenant 2 objets virtuels on paye
(logiquement) +24.
Et oui.Eventuellement, tu peux non pas stoquer un double mais un
unsigned char t[sizeof double], et ne pas accéder à ta
variable, mais passer par une fonction qui va la recalculer
systématiquement.
double getValue(){
double res;
memcpy(&res, t, sizeof(res) );
return res;
}
void setValue(double d){
memcpy(t, &d);
}
oui mais là je vais trop perdre en temps. Ah la la, on veut
toujours le beurre, l'argent ... ;-p
Ben, le compromis mémoire/CPU est un très vieil équilibre en
info.Bon, il me semble que je n'ai pas d'autre choix que de me
résigner sur ce point et de bien repenser la structure de
mes objets.
Ben le polymorphisme dynamique, il faut le payer à un moment
ou à un autre. on peut par exemple décider de stocker le type
réel de l'objet dans un type énuméré (8 bits si tu as moins de
256 types), et de se gérer le polymorphisme à la main.
Mais faut être rigoureux pour pas se planter.
Ca peut peut-être se simplifier à grand coups de templates,
mais je ne me lancerais pas dans ça sans une bonne raison.