Hello tt l'monde !
J'ai un p'tit pb qui est à mon avis insolvable mais bon..je pose la question qd même..
Commençons déjà par du code :
Code :
- #include <condefs.h>
- #include <conio.h>
- #include <iostream>
- #pragma hdrstop
- #pragma argsused
- using namespace std ;
- typedef void (*ptrFct) (int i) ;
- class A{
- private :
- ptrFct f ;
- public :
- A(ptrFct p){
- f = p ;
- f(20) ;
- }
- } ;
- void fonction_test(int i){
- cout << i << endl ;
- getch() ;
- }
- int main(int argc, char **argv)
- {
- A var(fonction_test) ;
- return 0 ;
- }
|
Là, pas de pb, fonction_test() n'étant pas dans une classe, le p'tit programme fonctionne très bien et 20 est affiché à l'écran..
Mais voilà, moi je veux mettre fonction_test() dans une classe et c'est là que ça coince à cause de l'argument caché (le fameux this) passé à chaque fonction membre..
Voilà le même prog avec fonction_test dans une classe :
Code :
- #include <condefs.h>
- #include <conio.h>
- #include <iostream>
- #pragma hdrstop
- #pragma argsused
- using namespace std ;
- typedef void (*ptrFct) (int i) ;
- class A{
- private :
- ptrFct f ;
- public :
- A(ptrFct p){
- f = p ;
- f(20) ;
- }
- } ;
- class B{
- public :
- void fonction_test(int i){
- cout << i << endl ;
- getch() ;
- }
- } ;
- int main(int argc, char **argv)
- {
- B f ;
- A var(f->fonction_test) ;
- return 0 ;
- }
|
Là ça coince bien sûr à la déclaration de la variable var..
Je précise que fonction_test peut se trouver dans n'importe quelle classe donc la classe A ne connait pas la classe où se trouve fonction_test..
J'espère avoir été clair
Alors si y'a une solution, j'suis preneur
Merci