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.
verdoux
C'est sûr que les void* en c++, c'est pas bon signe.
chrisbk
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é
Alload
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 :)
youdontcare
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.
deathsharp
dans ce k oui
wpk
deathsharp a écrit a écrit :
la classe A ne pourra appeler aucune fonction de B
sisi mais seulement ds le cpp
deathsharp
la classe A ne pourra appeler aucune fonction de B
chrisbk
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]
wpk
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
deathsharp
design, c vrai que...
[edtdd]--Message édité par deathsharp--[/edtdd]
youdontcare
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();
Alload
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.