vecteur de pointeurs vers deux types différents... [c++] - Programmation
Marsh Posté le 04-01-2002 à 08:55:13
et selon le besoin, tu cast (conversion de type) des pointeurs quand tu veux les utiliser.
si celui que t'as récupéré est un pointeur vers un objet de type B, tu le cast par (B*), sinon (C*).
Marsh Posté le 04-01-2002 à 09:31:00
donc, si j'ai bien compris :
B element_de_type_B;
C element_de_type_C;
A * vecteur = new A[max];
(B*) vecteur[0] = element_de_type_B;
(C*) vecteur[1] = element_de_type_C;
...
Marsh Posté le 04-01-2002 à 09:35:46
B element_de_type_B;
C element_de_type_C;
A* vecteur = new A[max];
vecteur[0] = (A) element_de_type_B;
vecteur[1] = (A) element_de_type_C;
ms la c pas un vecteur de pointeurs sur A que t'as, c un vecteur de A (suffit de rajouter les * aux bons endroits )
Marsh Posté le 04-01-2002 à 10:02:23
argh, j'y arrive pas.
en fait, j'arrive à mettre les éléments de types B dans mon vecteur ; mais le problème, c'est que quand je veux afficher ces éléments, ils sont devenus des éléments de type A
Bong, je vous mets le code au cas où...
Code :
|
Marsh Posté le 04-01-2002 à 10:05:02
B* ptr_B;
C* ptr_C;
A* vecteur[max]; <-- la j'suis pas tres sur de ma creation de tableaux de pointeurs..
vecteur[0] = (A*) ptr_B;
vecteur[1] = (A*) ptr_C;
Marsh Posté le 04-01-2002 à 10:07:17
__Lolo__ a écrit a écrit : B* ptr_B; C* ptr_C; A* vecteur[max]; <-- la j'suis pas tres sur de ma creation de tableaux de pointeurs.. vecteur[0] = (A*) ptr_B; vecteur[1] = (A*) ptr_C; |
ca va pas, parce que ca transforme le ptr_B en type A
et ce que je veux, c'est qu'il fasse pointer vecteur[0] vers un type B...
Marsh Posté le 04-01-2002 à 11:36:25
vecteur[1] = *(tdroit*) (&a);
c'est sense faire quoi ca??
si a est de type tdroit alors
il est de type evenement aussi
et donc
vecteur[1] = &a;
ca suffit.
A+
LEGREG
Marsh Posté le 04-01-2002 à 11:41:00
t'as aussi un probleme avec les pointeurs toi..
tu dois definir un tableau de pointeurs
et non pas un tableau de type tevenement
tevenement **vecteur = new tevenement*[NMAX];
...
vecteur[1] = &a;
vecteur[1]->affiche();
A+
LEGREG
update: le code devrait marcher maintenant
[edtdd]--Message édité par legreg--[/edtdd]
Marsh Posté le 04-01-2002 à 12:58:42
argh, ca marche pas avec
tevenement **vecteur = new (tevenement*)[NMAX];
J'suis finalement passé par une structure
struct pointeureurs
{
tevenement * pointeurs;
};
puis:
pointeureurs *vecteur = new pointeureurs[MAX];
vecteur[1].pointeurs = &td;
vecteur[1].pointeurs->affiche();
Marsh Posté le 04-01-2002 à 13:20:56
j'ma gourre dans le code que je t'ai
donne:
essaie avec
new tevenement*[NMAX];
A+
LEGREG
Marsh Posté le 04-01-2002 à 13:34:26
bon c'est pas encore parfait
si tu utilises new il faut toujours
faire un delete derriere
donc avant de quitter ton programme
tu fais un
delete []vecteur;
ne pas oublier le [] sinon de mauvaises
choses se passent.
tu n'es pas oblige d'utiliser new et delete.
en C++ comme en C tu peux allouer
des tableaux de machin sur la pile
et ils sont detruits automatiquement
en dehors du scope de ta fonction:
Code :
|
attention a cette histoire de scope:
si tu veux que ton objet continue
a exister en dehors de ta fonction
il faut utiliser new et non pas
allouer sur la pile.
ici ca ne pose pas de probleme
parce que tout est declare dans le main().
A+
LEGREG
Marsh Posté le 04-01-2002 à 06:22:40
bonjour les gens,
voilà, je dois faire un vecteur de pointeurs vers deux types différents.
Vers deux classes qui dérivent d'une même autre classe en fait.
Mais j'y arrive pas
donc :
class A
class B : public A
class C : public A
vecteur de pointeurs vers des B's et des C's
Voili, si quelqu'un pouvait m'expliquer comment qu'il faut faire...