@pierre
Merci, en effet, ça fonctionne.
Franchement, je commence à me décourrager devant la somme de
connaissances à aquerrir avant de pouvoir coder un peu
proprement en C++... :(
La solution avec le pointeur me plait moins parce que B(A *a)
sous entend que l'objet A que je vais abriter dans B existe à
l'extérieur et y est donc modifiable. Le mieux serait que j'en
fasse une copie... genre :
class B{
A *_a;
B(A& a){_a=new A(a);};
non ?
@kanze
Mais ce n'est pas ce que tu as écrit. Tu as écrit que tu veux
une copie d'un A, qui est en A -- si on te donne une dérivée
de A, c'est bien, mais tu ne va copier que la partie A de
cette dérivée.
Hum... Dans mon cas ce ne sera pas forcément problématique.
Néanmoins, c'est un problème que je n'avais pas vu. Que faire
?
Tu as cité Java dans le sujet, alors... Si tu fais comme en
Java, et utilises un pointeur ou une référence, ça marche.
Je ne connais pas Java, je ne l'ai cité ici que parce que ceux
qui m'entourrent ici programment en java et qu'ils m'ont parlé
des interfaces... Un mécanisme qui semble se rapprocher de ce
que je veux faire.
Maintenant je ne vois pas bien en quoi l'utilisation du
pointeur résoud le problème précédent... Je veux dire, si _a
pointe vers l'extérieur de B comme l'a suggéré Pierre, OK,
l'objet pointé par _a peut etre d'une classe fille (encore
faudra t'il assaisonner a la sauce virtual, non ?), mais il
n'est pas "abrité" par B. Et si je fais mon micmac _a=new
A(a), j'obtiens bien un pointeur sur A et je fiche à la
poubelle les spécificités des filles.
Encore une fois, dans mon cas ça ne semble pas etre un
probleme dans la mesure où tout ce qui m'intéresse c'est la
fonction déclarée dans A et à définir dans les filles.
Une petite question tout de meme dans le cas où dans AA cette
fonction en appellerait une autre elle aussi dans AA:
class AA:public A{
protected:
fonction_specifique_a_AA();
public:
la_fonction_que_je_dois_implementer_pour_etre_un_A(){fonction_specifique_a_AA();};
}
fonction_spécifique_a_AA() ne sera pas définie dans mon objet
B::a. Cela étant ça ne devrait pas poser de probleme dans la
mesure où tout se compile bien et statiquement... Mais si
maintenant fonction_specifique_a_AA(); était virtuelle... vu
que la résolution est dynamique ça risque pas d'aller dans le
mur ?
@pierre
Merci, en effet, ça fonctionne.
Franchement, je commence à me décourrager devant la somme de
connaissances à aquerrir avant de pouvoir coder un peu
proprement en C++... :(
La solution avec le pointeur me plait moins parce que B(A *a)
sous entend que l'objet A que je vais abriter dans B existe à
l'extérieur et y est donc modifiable. Le mieux serait que j'en
fasse une copie... genre :
class B{
A *_a;
B(A& a){_a=new A(a);};
non ?
@kanze
Mais ce n'est pas ce que tu as écrit. Tu as écrit que tu veux
une copie d'un A, qui est en A -- si on te donne une dérivée
de A, c'est bien, mais tu ne va copier que la partie A de
cette dérivée.
Hum... Dans mon cas ce ne sera pas forcément problématique.
Néanmoins, c'est un problème que je n'avais pas vu. Que faire
?
Tu as cité Java dans le sujet, alors... Si tu fais comme en
Java, et utilises un pointeur ou une référence, ça marche.
Je ne connais pas Java, je ne l'ai cité ici que parce que ceux
qui m'entourrent ici programment en java et qu'ils m'ont parlé
des interfaces... Un mécanisme qui semble se rapprocher de ce
que je veux faire.
Maintenant je ne vois pas bien en quoi l'utilisation du
pointeur résoud le problème précédent... Je veux dire, si _a
pointe vers l'extérieur de B comme l'a suggéré Pierre, OK,
l'objet pointé par _a peut etre d'une classe fille (encore
faudra t'il assaisonner a la sauce virtual, non ?), mais il
n'est pas "abrité" par B. Et si je fais mon micmac _a=new
A(a), j'obtiens bien un pointeur sur A et je fiche à la
poubelle les spécificités des filles.
Encore une fois, dans mon cas ça ne semble pas etre un
probleme dans la mesure où tout ce qui m'intéresse c'est la
fonction déclarée dans A et à définir dans les filles.
Une petite question tout de meme dans le cas où dans AA cette
fonction en appellerait une autre elle aussi dans AA:
class AA:public A{
protected:
fonction_specifique_a_AA();
public:
la_fonction_que_je_dois_implementer_pour_etre_un_A(){fonction_specifique_a_AA();};
}
fonction_spécifique_a_AA() ne sera pas définie dans mon objet
B::a. Cela étant ça ne devrait pas poser de probleme dans la
mesure où tout se compile bien et statiquement... Mais si
maintenant fonction_specifique_a_AA(); était virtuelle... vu
que la résolution est dynamique ça risque pas d'aller dans le
mur ?
@pierre
Merci, en effet, ça fonctionne.
Franchement, je commence à me décourrager devant la somme de
connaissances à aquerrir avant de pouvoir coder un peu
proprement en C++... :(
La solution avec le pointeur me plait moins parce que B(A *a)
sous entend que l'objet A que je vais abriter dans B existe à
l'extérieur et y est donc modifiable. Le mieux serait que j'en
fasse une copie... genre :
class B{
A *_a;
B(A& a){_a=new A(a);};
non ?
@kanze
Mais ce n'est pas ce que tu as écrit. Tu as écrit que tu veux
une copie d'un A, qui est en A -- si on te donne une dérivée
de A, c'est bien, mais tu ne va copier que la partie A de
cette dérivée.
Hum... Dans mon cas ce ne sera pas forcément problématique.
Néanmoins, c'est un problème que je n'avais pas vu. Que faire
?
Tu as cité Java dans le sujet, alors... Si tu fais comme en
Java, et utilises un pointeur ou une référence, ça marche.
Je ne connais pas Java, je ne l'ai cité ici que parce que ceux
qui m'entourrent ici programment en java et qu'ils m'ont parlé
des interfaces... Un mécanisme qui semble se rapprocher de ce
que je veux faire.
Maintenant je ne vois pas bien en quoi l'utilisation du
pointeur résoud le problème précédent... Je veux dire, si _a
pointe vers l'extérieur de B comme l'a suggéré Pierre, OK,
l'objet pointé par _a peut etre d'une classe fille (encore
faudra t'il assaisonner a la sauce virtual, non ?), mais il
n'est pas "abrité" par B. Et si je fais mon micmac _a=new
A(a), j'obtiens bien un pointeur sur A et je fiche à la
poubelle les spécificités des filles.
Encore une fois, dans mon cas ça ne semble pas etre un
probleme dans la mesure où tout ce qui m'intéresse c'est la
fonction déclarée dans A et à définir dans les filles.
Une petite question tout de meme dans le cas où dans AA cette
fonction en appellerait une autre elle aussi dans AA:
class AA:public A{
protected:
fonction_specifique_a_AA();
public:
la_fonction_que_je_dois_implementer_pour_etre_un_A(){fonction_specifique_a_AA();};
}
fonction_spécifique_a_AA() ne sera pas définie dans mon objet
B::a. Cela étant ça ne devrait pas poser de probleme dans la
mesure où tout se compile bien et statiquement... Mais si
maintenant fonction_specifique_a_AA(); était virtuelle... vu
que la résolution est dynamique ça risque pas d'aller dans le
mur ?
On 9 Dec 2005 07:17:59 -0800, "meow" :
Rassurez moi, vous pratiquez le C++ depuis longtemps, non ?
Pour James (Kanze), c'est sûr -- je crois bien qu'il l'a vu
naître ;-)
À part ça, rassure-toi, en moins de 5 ans on arrive à acquerir
tous ces réflexes salutaires.
On 9 Dec 2005 07:17:59 -0800, "meow" <ben@agat.net>:
Rassurez moi, vous pratiquez le C++ depuis longtemps, non ?
Pour James (Kanze), c'est sûr -- je crois bien qu'il l'a vu
naître ;-)
À part ça, rassure-toi, en moins de 5 ans on arrive à acquerir
tous ces réflexes salutaires.
On 9 Dec 2005 07:17:59 -0800, "meow" :
Rassurez moi, vous pratiquez le C++ depuis longtemps, non ?
Pour James (Kanze), c'est sûr -- je crois bien qu'il l'a vu
naître ;-)
À part ça, rassure-toi, en moins de 5 ans on arrive à acquerir
tous ces réflexes salutaires.
"meow" writes:
À part ça, rassure-toi, en moins de 5 ans on arrive à
acquerir tous ces réflexes salutaires.
'''O_o C'est vraiment sensé me rassurer ? 5 ans ?
Apres 5 ans, on a acquis le reflexe salutaire de se considerer
comme ignorant :-)
"meow" <ben@agat.net> writes:
À part ça, rassure-toi, en moins de 5 ans on arrive à
acquerir tous ces réflexes salutaires.
'''O_o C'est vraiment sensé me rassurer ? 5 ans ?
Apres 5 ans, on a acquis le reflexe salutaire de se considerer
comme ignorant :-)
"meow" writes:
À part ça, rassure-toi, en moins de 5 ans on arrive à
acquerir tous ces réflexes salutaires.
'''O_o C'est vraiment sensé me rassurer ? 5 ans ?
Apres 5 ans, on a acquis le reflexe salutaire de se considerer
comme ignorant :-)
Jean-Marc Bourguet wrote:
"meow" writes:
À part ça, rassure-toi, en moins de 5 ans on arrive à
acquerir tous ces réflexes salutaires.
'''O_o C'est vraiment sensé me rassurer ? 5 ans ?
Apres 5 ans, on a acquis le reflexe salutaire de se
considerer comme ignorant :-)
De toute façon, je ne connais pas de langages dans lequel on
peut être efficace en moins de 3 ans ! Même les langages à
apprentissage dit "rapide" (genre Python) demandent beaucoup
de temps avant d'arriver à voir, à l'avance, ce qui marchera
bien pour de gros projets.
Jean-Marc Bourguet wrote:
"meow" <ben@agat.net> writes:
À part ça, rassure-toi, en moins de 5 ans on arrive à
acquerir tous ces réflexes salutaires.
'''O_o C'est vraiment sensé me rassurer ? 5 ans ?
Apres 5 ans, on a acquis le reflexe salutaire de se
considerer comme ignorant :-)
De toute façon, je ne connais pas de langages dans lequel on
peut être efficace en moins de 3 ans ! Même les langages à
apprentissage dit "rapide" (genre Python) demandent beaucoup
de temps avant d'arriver à voir, à l'avance, ce qui marchera
bien pour de gros projets.
Jean-Marc Bourguet wrote:
"meow" writes:
À part ça, rassure-toi, en moins de 5 ans on arrive à
acquerir tous ces réflexes salutaires.
'''O_o C'est vraiment sensé me rassurer ? 5 ans ?
Apres 5 ans, on a acquis le reflexe salutaire de se
considerer comme ignorant :-)
De toute façon, je ne connais pas de langages dans lequel on
peut être efficace en moins de 3 ans ! Même les langages à
apprentissage dit "rapide" (genre Python) demandent beaucoup
de temps avant d'arriver à voir, à l'avance, ce qui marchera
bien pour de gros projets.