jobject* factory(bool t)
{
if(t) return new jclass;
return new jother;
}
int main()
{
jobject *o = factory(false);
jclass *c = static_cast<jclass *>(o);
}
au début, je procédé sans class jother et sans factory, je me suis dit
que c'était mon compilateur qui me jouait des tour (genre il déduisait
un peu trop à mon gout)
il me semble pourtant qu'ici le static_cast est totalement incertain ...
et qu'après l'ajout d'une base virtuelle, il faudrait utiliser le
dynamic_cast ...
Le Fri, 25 Jun 2004 05:16:56 -0700, kanze a écrit :
merci à tous
Fabien LE LEZ
On Sun, 04 Jul 2004 23:49:35 +0200, drkm :
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux. Je ne m'étais jamais posé la question en dehors de ce cadre.
Quelle est la différence entre un pointeur sur un objet et un pointeur sur le premier objet d'un tableau de 1 élément ?
-- schtroumpf schtroumpf Jean-Emile de France
On Sun, 04 Jul 2004 23:49:35 +0200, drkm <usenet.fclcxx@fgeorges.org>:
Tiens. J'ai toujours entendu parler de la validité d'un pointeur
sur le successeur d'un objet dans le cadre des tableaux. Je ne
m'étais jamais posé la question en dehors de ce cadre.
Quelle est la différence entre un pointeur sur un objet et un pointeur
sur le premier objet d'un tableau de 1 élément ?
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux. Je ne m'étais jamais posé la question en dehors de ce cadre.
Quelle est la différence entre un pointeur sur un objet et un pointeur sur le premier objet d'un tableau de 1 élément ?
-- schtroumpf schtroumpf Jean-Emile de France
drkm
Fabien LE LEZ writes:
Si p est un pointeur non NULL, qui ne pointe pas vers un objet (ou vers le successeur d'un objet, i.e. &objet + 1)
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux. Je ne m'étais jamais posé la question en dehors de ce cadre. Pointer vers le « successeur » d'un objet est-il réellement permis pour tout objet ?
--drkm
Fabien LE LEZ <gramster@gramster.com> writes:
Si p est un pointeur non NULL, qui ne pointe pas vers un objet (ou
vers le successeur d'un objet, i.e. &objet + 1)
Tiens. J'ai toujours entendu parler de la validité d'un pointeur
sur le successeur d'un objet dans le cadre des tableaux. Je ne
m'étais jamais posé la question en dehors de ce cadre. Pointer vers
le « successeur » d'un objet est-il réellement permis pour tout
objet ?
Si p est un pointeur non NULL, qui ne pointe pas vers un objet (ou vers le successeur d'un objet, i.e. &objet + 1)
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux. Je ne m'étais jamais posé la question en dehors de ce cadre. Pointer vers le « successeur » d'un objet est-il réellement permis pour tout objet ?
--drkm
darkman_spam
Fabien LE LEZ wrote in message :
On Sun, 04 Jul 2004 23:49:35 +0200, drkm :
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux. Je ne m'étais jamais posé la question en dehors de ce cadre.
Quelle est la différence entre un pointeur sur un objet et un pointeur sur le premier objet d'un tableau de 1 élément ?
Je ne sais pas. Je n'en vois pas. C'est pourquoi je posais la question, car je en voyais rien s'y opposant, alors que je n'en vois l'utilité que dans le cadre de tableau. Bien que je peux imaginer un algorithme prenant une séquence en entrée (un itérateur de début et un itérateur de fin, one past the end) que l'on veut utiliser sur un objet unique :
Ok. Je viens de trouver une utilisation. Donc ce code est légal ?
--drkm
Fabien LE LEZ wrote in message <7guge0p48o7t8mddmvud2rgnl44gg8ta7o@4ax.com>:
On Sun, 04 Jul 2004 23:49:35 +0200, drkm <usenet.fclcxx@fgeorges.org>:
Tiens. J'ai toujours entendu parler de la validité d'un pointeur
sur le successeur d'un objet dans le cadre des tableaux. Je ne
m'étais jamais posé la question en dehors de ce cadre.
Quelle est la différence entre un pointeur sur un objet et un pointeur
sur le premier objet d'un tableau de 1 élément ?
Je ne sais pas. Je n'en vois pas. C'est pourquoi je posais la
question, car je en voyais rien s'y opposant, alors que je n'en vois
l'utilité que dans le cadre de tableau. Bien que je peux imaginer un
algorithme prenant une séquence en entrée (un itérateur de début et un
itérateur de fin, one past the end) que l'on veut utiliser sur un
objet unique :
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux. Je ne m'étais jamais posé la question en dehors de ce cadre.
Quelle est la différence entre un pointeur sur un objet et un pointeur sur le premier objet d'un tableau de 1 élément ?
Je ne sais pas. Je n'en vois pas. C'est pourquoi je posais la question, car je en voyais rien s'y opposant, alors que je n'en vois l'utilité que dans le cadre de tableau. Bien que je peux imaginer un algorithme prenant une séquence en entrée (un itérateur de début et un itérateur de fin, one past the end) que l'on veut utiliser sur un objet unique :
Ok. Je viens de trouver une utilisation. Donc ce code est légal ?
--drkm
Fabien LE LEZ
On 5 Jul 2004 05:33:02 -0700, (drkm):
Je ne sais pas. Je n'en vois pas. C'est pourquoi je posais la question, car je en voyais rien s'y opposant, alors que je n'en vois l'utilité que dans le cadre de tableau.
En fait, je ne cherchais pas une utilité dans mon message, je cherchais juste à trouver tous les cas où utiliser un pointeur était valide ;-)
-- schtroumpf schtroumpf Jean-Emile de France
On 5 Jul 2004 05:33:02 -0700, darkman_spam@yahoo.fr (drkm):
Je ne sais pas. Je n'en vois pas. C'est pourquoi je posais la
question, car je en voyais rien s'y opposant, alors que je n'en vois
l'utilité que dans le cadre de tableau.
En fait, je ne cherchais pas une utilité dans mon message, je
cherchais juste à trouver tous les cas où utiliser un pointeur était
valide ;-)
Je ne sais pas. Je n'en vois pas. C'est pourquoi je posais la question, car je en voyais rien s'y opposant, alors que je n'en vois l'utilité que dans le cadre de tableau.
En fait, je ne cherchais pas une utilité dans mon message, je cherchais juste à trouver tous les cas où utiliser un pointeur était valide ;-)
-- schtroumpf schtroumpf Jean-Emile de France
Loïc Joly
drkm wrote:
Fabien LE LEZ writes:
Si p est un pointeur non NULL, qui ne pointe pas vers un objet (ou vers le successeur d'un objet, i.e. &objet + 1)
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux.
Tout pareil
Je ne m'étais jamais posé la question en dehors de ce cadre.
Tout pareil
Pointer vers le « successeur » d'un objet est-il réellement permis pour tout objet ?
A ma surprise, il semble que oui : 5.7.4 : For the purposes of these operators, a pointer to a nonarray object behaves the same as a pointer to the first element of an array of length one with the type of the object as its element type.
Et :
5.7.5 [...] Moreover, if the expression P points to the last element of an array object, the expression (P)+1 points one past the last element of the array object, and if the expression Q points one past the last element of an array object, the expression (Q)1 points to the last element of the array object. If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
-- Loïc
drkm wrote:
Fabien LE LEZ <gramster@gramster.com> writes:
Si p est un pointeur non NULL, qui ne pointe pas vers un objet (ou
vers le successeur d'un objet, i.e. &objet + 1)
Tiens. J'ai toujours entendu parler de la validité d'un pointeur
sur le successeur d'un objet dans le cadre des tableaux.
Tout pareil
Je ne
m'étais jamais posé la question en dehors de ce cadre.
Tout pareil
Pointer vers
le « successeur » d'un objet est-il réellement permis pour tout
objet ?
A ma surprise, il semble que oui :
5.7.4 :
For the purposes of these operators, a pointer to a nonarray object
behaves the same as a pointer to the first element of an array of length
one with the type of the object as its element type.
Et :
5.7.5
[...] Moreover, if the expression P points to the last element of an
array object, the expression (P)+1 points one past the last element of
the array object, and if the expression Q points one past the last
element of an array object, the expression (Q)1 points to the last
element of the array object.
If both the pointer operand and the result point to elements of the same
array object, or one past the last element of the array object, the
evaluation shall not produce an overflow; otherwise, the behavior is
undefined.
Si p est un pointeur non NULL, qui ne pointe pas vers un objet (ou vers le successeur d'un objet, i.e. &objet + 1)
Tiens. J'ai toujours entendu parler de la validité d'un pointeur sur le successeur d'un objet dans le cadre des tableaux.
Tout pareil
Je ne m'étais jamais posé la question en dehors de ce cadre.
Tout pareil
Pointer vers le « successeur » d'un objet est-il réellement permis pour tout objet ?
A ma surprise, il semble que oui : 5.7.4 : For the purposes of these operators, a pointer to a nonarray object behaves the same as a pointer to the first element of an array of length one with the type of the object as its element type.
Et :
5.7.5 [...] Moreover, if the expression P points to the last element of an array object, the expression (P)+1 points one past the last element of the array object, and if the expression Q points one past the last element of an array object, the expression (Q)1 points to the last element of the array object. If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
-- Loïc
drkm
Loïc Joly writes:
5.7.4 :
[...]
5.7.5 [...] Moreover, if the expression P points to the last element of an array object, the expression (P)+1 points one past the last element of the array object, and if the expression Q points one past the last element of an array object, the expression (Q)1 points to the last ^^^^
element of the array object.
[...]
Il s'agit bien sûr de (Q)-1.
Merci pour ces références.
Comme je l'ai dit dans un autre article, cela permet de traiter un objet comme une séquence d'un seul élément, identifiée par l'adresse de l'objet et celle de l'emplacement suivant. Mais il est vrai que tant qu'à présent, je n'en ai jamais eu besoin.
--drkm
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
5.7.4 :
[...]
5.7.5
[...] Moreover, if the expression P points to the last element of an
array object, the expression (P)+1 points one past the last element of
the array object, and if the expression Q points one past the last
element of an array object, the expression (Q)1 points to the last
^^^^
element of the array object.
[...]
Il s'agit bien sûr de (Q)-1.
Merci pour ces références.
Comme je l'ai dit dans un autre article, cela permet de traiter un
objet comme une séquence d'un seul élément, identifiée par l'adresse
de l'objet et celle de l'emplacement suivant. Mais il est vrai que
tant qu'à présent, je n'en ai jamais eu besoin.
5.7.5 [...] Moreover, if the expression P points to the last element of an array object, the expression (P)+1 points one past the last element of the array object, and if the expression Q points one past the last element of an array object, the expression (Q)1 points to the last ^^^^
element of the array object.
[...]
Il s'agit bien sûr de (Q)-1.
Merci pour ces références.
Comme je l'ai dit dans un autre article, cela permet de traiter un objet comme une séquence d'un seul élément, identifiée par l'adresse de l'objet et celle de l'emplacement suivant. Mais il est vrai que tant qu'à présent, je n'en ai jamais eu besoin.