[C++] Problème avec des pointeurs

Problème avec des pointeurs [C++] - Programmation

Marsh Posté le 26-11-2001 à 20:05:08    

Bon, je dispose d'une class qui a besoin d'avoir un pointeur sur une autre class définie après elle.
 
Pour avoir le pointeur j'utilise un void* comme je ne peux pas faire CLaclasseddefinieapres*.
 
Le problème, c'est qu'il faut aussi que j'utilise une fonction de la deuxième class.
 
Mais là ça marche plus, ça me dit que le pointeur doit être une class.
 
:(
 
Une idée de comment résoudre cette imbrication?

Reply

Marsh Posté le 26-11-2001 à 20:05:08   

Reply

Marsh Posté le 26-11-2001 à 20:08:08    

problème de design, sûrement ....
 
sinon si tu as une classe de type 'myClass' avec une méthode 'myMethod' que tu veux appeler à partir d'un pointeur void :
 
void* ptr = ...;
 
((myClass*)ptr)->myMethod();

Reply

Marsh Posté le 26-11-2001 à 20:22:27    

design, c vrai que...

 

[edtdd]--Message édité par deathsharp--[/edtdd]


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 26-11-2001 à 21:00:38    

tu declares
class B;
class A  
{
 
 
B * unB;
};
 
class B
{
};
 
et tu fais les choses proprement et vire le code du .h vers le .cpp avec au besoin un inline pour pas penaliser les perfs

Reply

Marsh Posté le 26-11-2001 à 21:01:51    

sinon t'es pas obligé de coller du void
Si j'ai bien compris tu as une class A qui pointe vers B et B qui point vers A ?
 
dans A.h tu met au debut :
 
class B;
 
et dans B.h tu met:
class A;
 
et dans a.cpp tu inclue 'B.h' et dns b.cpp tu inclue 'a.h'
 
(bon wpk m'as graté de qq secondes :) )

 

[edtdd]--Message édité par chrisbk--[/edtdd]

Reply

Marsh Posté le 26-11-2001 à 21:02:11    

la classe A ne pourra appeler aucune fonction de B


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 26-11-2001 à 21:04:17    

deathsharp a écrit a écrit :

la classe A ne pourra appeler aucune fonction de B  




 
sisi mais seulement ds le cpp

Reply

Marsh Posté le 26-11-2001 à 21:05:44    

dans ce k oui


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 26-11-2001 à 21:25:30    

chrisbk a écrit a écrit :

et dans a.cpp tu inclue 'B.h' et dns b.cpp tu inclue 'a.h'


:heink:
j'aimerais bien qu'alload nous décrive son problème. la dernière fois que j'ai fait ça, c'était un _gros_ problème de design.

Reply

Marsh Posté le 26-11-2001 à 21:41:25    

En fait, j'ai juste placé les définitions des fonctions après les deux class, et pour le pointeur de type void* j'ai utilisé (CClass2*)pointeur)->Fonction() pour pouvoir l'utiliser, et ça marche :)

Reply

Marsh Posté le 26-11-2001 à 21:41:25   

Reply

Marsh Posté le 26-11-2001 à 22:19:14    

youdontcare a écrit a écrit :

:heink:
j'aimerais bien qu'alload nous décrive son problème. la dernière fois que j'ai fait ça, c'était un _gros_ problème de design.  




 
ben je dis pas que son design est nickel, je lui donne une solution pour faire malgré

Reply

Marsh Posté le 26-11-2001 à 22:25:22    

C'est sûr que les void* en c++, c'est pas bon signe.

Reply

Marsh Posté le 26-11-2001 à 22:25:54    

chrisbk a écrit a écrit :

ben je dis pas que son design est nickel, je lui donne une solution pour faire malgré


:) j'avais bien compris, la remarque était plus pour alload que pour cette méthode.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed