Mettons de coté l'aspect peu ragoutant de la chose...
Mettons de coté l'aspect peu ragoutant de la chose...
Mettons de coté l'aspect peu ragoutant de la chose...
Mettons de coté l'aspect peu ragoutant de la chose...
Mes questions :
A& et AA& ont-ils la meme taille (deux references, donc meme taille que deux
pointeurs ?)
Le reinterpret_cast est il portable (Intel/PowerPC) (VC++7.1/gcc3) ?
Mettons de coté l'aspect peu ragoutant de la chose...
Mes questions :
A& et AA& ont-ils la meme taille (deux references, donc meme taille que deux
pointeurs ?)
Le reinterpret_cast est il portable (Intel/PowerPC) (VC++7.1/gcc3) ?
Mettons de coté l'aspect peu ragoutant de la chose...
Mes questions :
A& et AA& ont-ils la meme taille (deux references, donc meme taille que deux
pointeurs ?)
Le reinterpret_cast est il portable (Intel/PowerPC) (VC++7.1/gcc3) ?
On Wed, 07 Apr 2004 11:12:38 GMT, "Amerio" wrote:Mettons de coté l'aspect peu ragoutant de la chose...
Bon, OK, on va supposer que l'idée d'utiliser ce genre de techniques
ne t'es jamais venu à l'esprit.
[NB : je ne m'y connais pas assez dans ce domaine pour que ce qui suit
ait la moindre valeur de référence...]Mes questions :
A& et AA& ont-ils la meme taille (deux references, donc meme taille
que deux pointeurs ?)
AMHA, parler de la taille de A& n'a pas vraiment de sens. On ne peut
que parler de la taille du pointeur sous-jacent. Et c'est
effectivement la même.
Le reinterpret_cast est il portable (Intel/PowerPC) (VC++7.1/gcc3) ?
Je crois que le reinterpret_cast<> est valide, car les types de départ
et d'arrivée ont la même taille, et le principe de reinterpret_cast<>
est de copier des bits d'une variable à l'autre.
Maintenant, la seule manière dont je l'utilise est de stocker
temporairement un pointeur dans un entier (ou un truc dans ce
goût-là).
En gros, j'ai un pointeur, je le transforme en un entier, puis je le
retransforme en un pointeur du même type que l'original avant de
l'utiliser :
void f (unsigned n)
{
cout << *reinterpret_cast<std::string*>(n) << endl;
}
void g()
{
std::string s ("Hello World!");
f (reinterpret_cast<unsigned>(&s));
}
Ça non plus, c'est pas très ragoutant, mais je sais que ça marche, du
moins sous Win32 -- et comme je n'utilise le mécanisme en question
qu'à cause du mode de fonctionnement de cette plate-forme, tout va
bien ;-)
Donc, en conclusion, le reinterpret_cast<> me paraît correct.
Ce qui ne veut pas dire que la variable ainsi créée ait la moindre
utilité. Pour la validité de la ligne suivante (l'utilisation de la
variable en question), j'ai de gros doutes, mais je préfère laisser la
parole à quelqu'un de plus au fait que moi de ces choses-là...
On Wed, 07 Apr 2004 11:12:38 GMT, "Amerio" <amerio@hotmail.com> wrote:
Mettons de coté l'aspect peu ragoutant de la chose...
Bon, OK, on va supposer que l'idée d'utiliser ce genre de techniques
ne t'es jamais venu à l'esprit.
[NB : je ne m'y connais pas assez dans ce domaine pour que ce qui suit
ait la moindre valeur de référence...]
Mes questions :
A& et AA& ont-ils la meme taille (deux references, donc meme taille
que deux pointeurs ?)
AMHA, parler de la taille de A& n'a pas vraiment de sens. On ne peut
que parler de la taille du pointeur sous-jacent. Et c'est
effectivement la même.
Le reinterpret_cast est il portable (Intel/PowerPC) (VC++7.1/gcc3) ?
Je crois que le reinterpret_cast<> est valide, car les types de départ
et d'arrivée ont la même taille, et le principe de reinterpret_cast<>
est de copier des bits d'une variable à l'autre.
Maintenant, la seule manière dont je l'utilise est de stocker
temporairement un pointeur dans un entier (ou un truc dans ce
goût-là).
En gros, j'ai un pointeur, je le transforme en un entier, puis je le
retransforme en un pointeur du même type que l'original avant de
l'utiliser :
void f (unsigned n)
{
cout << *reinterpret_cast<std::string*>(n) << endl;
}
void g()
{
std::string s ("Hello World!");
f (reinterpret_cast<unsigned>(&s));
}
Ça non plus, c'est pas très ragoutant, mais je sais que ça marche, du
moins sous Win32 -- et comme je n'utilise le mécanisme en question
qu'à cause du mode de fonctionnement de cette plate-forme, tout va
bien ;-)
Donc, en conclusion, le reinterpret_cast<> me paraît correct.
Ce qui ne veut pas dire que la variable ainsi créée ait la moindre
utilité. Pour la validité de la ligne suivante (l'utilisation de la
variable en question), j'ai de gros doutes, mais je préfère laisser la
parole à quelqu'un de plus au fait que moi de ces choses-là...
On Wed, 07 Apr 2004 11:12:38 GMT, "Amerio" wrote:Mettons de coté l'aspect peu ragoutant de la chose...
Bon, OK, on va supposer que l'idée d'utiliser ce genre de techniques
ne t'es jamais venu à l'esprit.
[NB : je ne m'y connais pas assez dans ce domaine pour que ce qui suit
ait la moindre valeur de référence...]Mes questions :
A& et AA& ont-ils la meme taille (deux references, donc meme taille
que deux pointeurs ?)
AMHA, parler de la taille de A& n'a pas vraiment de sens. On ne peut
que parler de la taille du pointeur sous-jacent. Et c'est
effectivement la même.
Le reinterpret_cast est il portable (Intel/PowerPC) (VC++7.1/gcc3) ?
Je crois que le reinterpret_cast<> est valide, car les types de départ
et d'arrivée ont la même taille, et le principe de reinterpret_cast<>
est de copier des bits d'une variable à l'autre.
Maintenant, la seule manière dont je l'utilise est de stocker
temporairement un pointeur dans un entier (ou un truc dans ce
goût-là).
En gros, j'ai un pointeur, je le transforme en un entier, puis je le
retransforme en un pointeur du même type que l'original avant de
l'utiliser :
void f (unsigned n)
{
cout << *reinterpret_cast<std::string*>(n) << endl;
}
void g()
{
std::string s ("Hello World!");
f (reinterpret_cast<unsigned>(&s));
}
Ça non plus, c'est pas très ragoutant, mais je sais que ça marche, du
moins sous Win32 -- et comme je n'utilise le mécanisme en question
qu'à cause du mode de fonctionnement de cette plate-forme, tout va
bien ;-)
Donc, en conclusion, le reinterpret_cast<> me paraît correct.
Ce qui ne veut pas dire que la variable ainsi créée ait la moindre
utilité. Pour la validité de la ligne suivante (l'utilisation de la
variable en question), j'ai de gros doutes, mais je préfère laisser la
parole à quelqu'un de plus au fait que moi de ces choses-là...
C'est beau,
mais ça marche pas sur ma machine.
C'est beau,
mais ça marche pas sur ma machine.
C'est beau,
mais ça marche pas sur ma machine.