adresse d'une methode

adresse d'une methode - C++ - Programmation

Marsh Posté le 16-03-2004 à 19:04:30    

slt tlm voila j'aimerais savoir comment obtenir l'adresse d'une methode pour la passer en parametre a une autre methode de la meme classe
merci de votre aide


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 16-03-2004 à 19:04:30   

Reply

Marsh Posté le 16-03-2004 à 19:51:25    

drapal

Reply

Marsh Posté le 16-03-2004 à 20:34:43    

Il faut passer l'adresse de l'objet (*C)et ensuite appeler la methode par l'intermédiaire du pointeur de l'objet (C->methode()).
 
Cordialement,
   XteR.

Reply

Marsh Posté le 16-03-2004 à 20:37:03    

quoi drapal ? on l'a déjà faite 100x
 
JagStang > ça métonne ça  
 
 

Code :
  1. #include <iostream>
  2.                                                                                                                                                            
  3.                                                                                                                                                            
  4. struct Foo
  5. {
  6.   void foo()
  7.   {
  8.     std::cout << "void Foo::foo()\n";
  9.   }
  10.                                                                                                                                                            
  11.   void foo(int)
  12.   {
  13.     std::cout << "void Foo::foo(int)\n";
  14.   }
  15.                                                                                                                                                            
  16.   void foo() const
  17.   {
  18.     std::cout << "void Foo::foo() const\n";
  19.   }
  20.                                                                                                                                                            
  21.   static void bar()
  22.   {
  23.     std::cout << "static void Foo::bar()\n";
  24.   };
  25. };
  26.                                                                                                                                                            
  27.                                                                                                                                                            
  28. int main()
  29. {
  30.   Foo obj;
  31.   Foo *ptr(&obj);
  32.                                                                                                                                                            
  33.   typedef void (Foo::*Foofoov)();
  34.   typedef void (Foo::*Foofooi)(int);
  35.   typedef void (Foo::*Foofoovc)() const;
  36.                                                                                                                                                            
  37.                                                                                                                                                            
  38.   Foofoov a(&Foo::foo);
  39.   Foofooi b(&Foo::foo);
  40.   Foofoovc c(&Foo::foo);
  41.                                                                                                                                                            
  42.                                                                                                                                                            
  43.   (obj.*a)();
  44.   (obj.*b)(42);
  45.   (obj.*c)();
  46.                                                                                                                                                            
  47.   (ptr->*a)();
  48.   (ptr->*b)(42);
  49.   (ptr->*c)();
  50. }

Reply

Marsh Posté le 16-03-2004 à 23:08:00    

heu ...  
c une structure ca. moi je parle pour une classe.
 
edit : en plus pas un seul commentaires je comprend rien


Message édité par carot0 le 16-03-2004 à 23:08:28

---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 16-03-2004 à 23:12:39    

carot0 a écrit :

heu ...  
c une structure ca. moi je parle pour une classe.
 
edit : en plus pas un seul commentaires je comprend rien

et c'est quoi la différence entre struct et class pour toi ?
 
pas grand chose à dire sinon
la syntaxe
un typedef pour planquer tout ça, parce que c'est lour à écrire
et syntaxe d'appel

Reply

Marsh Posté le 16-03-2004 à 23:52:24    

Taz a écrit :

quoi drapal ? on l'a déjà faite 100x
 
JagStang > ça métonne ça  


 
oui mais bon. j'avais un doute et j'arrivais plus à mettre la main sur un exemple...  :jap:  
 
 :p

Reply

Marsh Posté le 17-03-2004 à 10:47:25    

juste pour la completer la diff entre class et struct
la plus grosse etant sans doute
une struct par default c'est public  
et une classe c'est prive.
donc t as economiser une ligne dans ta declaration ,
 pas besoin de public:
 
 
 
 
 
 
 
 
 

Reply

Marsh Posté le 17-03-2004 à 13:00:55    

Taz a écrit :

et c'est quoi la différence entre struct et class pour toi ?
 
pas grand chose à dire sinon
la syntaxe
un typedef pour planquer tout ça, parce que c'est lour à écrire
et syntaxe d'appel


ok merci


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 17-03-2004 à 17:02:19    

frenchkiss a écrit :

juste pour la completer la diff entre class et struct
la plus grosse etant sans doute
 

y en a d'autres ?

Reply

Marsh Posté le 17-03-2004 à 17:02:19   

Reply

Marsh Posté le 18-03-2004 à 10:14:07    

Oui, on peut faire de l'héritage avec des classes :-P
Sinon, je te conseille cette superbe référence sur le C++:
http://cowww.epfl.ch/infgmel/doc/coursCpp/book1.html
notamment cette section :
http://cowww.epfl.ch/infgmel/doc/coursCpp/x3828.html

Reply

Marsh Posté le 18-03-2004 à 10:28:00    

julienr a écrit :

Oui, on peut faire de l'héritage avec des classes :-P
Sinon, je te conseille cette superbe référence sur le C++:
http://cowww.epfl.ch/infgmel/doc/coursCpp/book1.html
notamment cette section :
http://cowww.epfl.ch/infgmel/doc/coursCpp/x3828.html


 
 :lol: y a des fortunes qui se perdent  :whistle:
 
et accessoiremnt :
 

Code :
  1. struct toto {};
  2. struct tata : public toto {};


 
passe sans problêm [:dawa]


Message édité par Joel F le 18-03-2004 à 10:29:22
Reply

Marsh Posté le 18-03-2004 à 11:20:37    

Joel F a écrit :


 
 :lol: y a des fortunes qui se perdent  :whistle:
 
et accessoiremnt :
 

Code :
  1. struct toto {};
  2. struct tata : public toto {};


 
passe sans problêm [:dawa]


 
Je sais pas avec quel type de C tu bosses, mais chez moi, gcc3.3 :

Code :
  1. [FULL][11:19:13] silver:$> cat struct_test.c
  2. struct t_a
  3. {
  4.         int a;
  5. };
  6. struct t_b : public t_a
  7. {
  8.         int b;
  9. };
  10. void main(void)
  11. {
  12.         struct t_a test1;
  13.         struct t_b test2;
  14.         test1.a = 2;
  15.         test2.b = 3;
  16. }


Code :
  1. [FULL][11:17:56] silver:$> gcc -o struct struct_test.c
  2. struct_test.c:7: error: erreur d'analyse syntaxique before ':' token
  3. struct_test.c: Dans la fonction « main »:
  4. struct_test.c:15: error: storage size of `test2' isn't known
  5. struct_test.c:13: attention : le type de retour de « main » n'est pas « int »


 
En plus, je n'ai _jamais_ vu de tels trucs dans un cours de c (meme dans le bouquin des 2 créateurs :-P)
 
Par contre, si j'utilise g++ (donc c++), alors le code passe sans erreur (a par que main doit retourner un int...)
 
Donc NON, il n'y a pas d'héritage en c, auquel cas le c++ ne servirait à rien :-P


Message édité par julienr le 18-03-2004 à 11:21:47
Reply

Marsh Posté le 18-03-2004 à 11:23:50    

>Par contre, si j'utilise g++ (donc c++), alors le code passe >sans erreur (a par que main doit retourner un int...)  
>Donc NON, il n'y a pas d'héritage en c, auquel cas le c++ ne >servirait à rien :-P  
 
lol merci pour cette super info

Reply

Marsh Posté le 18-03-2004 à 11:23:59    

o_O excuse moi mais bon la ...
on parle des struct en C++ justement >.<

Reply

Marsh Posté le 18-03-2004 à 11:42:10    

Arf, j'ai aussi une fixation sur struct -> C, class -> C++, donc désolé..
 
frenchkiss, en fait, gcc se base sur l'extension de tes fichiers (.c -> c, .cc .cpp -> c++) pour voir s'il doit compiler en tant que c ou c++. Si tu appelles g++, tu le force à compiler ça comme du c++.

Reply

Marsh Posté le 18-03-2004 à 12:11:49    

y a vraiment des baffes qui se perdent quand même
merci pour les liens d'ailleurs tu ferais bien de le lire avant de le conseiller http://cowww.epfl.ch/infgmel/doc/coursCpp/x2726.html
j'aime bien quand l'hopital se fout de la charité, c'est pas comme si en définitif t'étais le seul à avoir appris quelque chose :D

Reply

Marsh Posté le 18-03-2004 à 14:03:11    

tout est la :

Citation :


A language feature in C++ that is very similar to a class is the struct. This is essentially a hangover from the C language. (Windows was written in C before C++ became widely used, hence the struct appears pervasively in Windows programming.) The struct in C++, however, extends greatly the capability of the C struct - in fact, in C++ the keywords struct and class are are almost identical, and the reason struct is maintained C++ is for reasons of backward compatibility with C. The only difference between these two keywords is that the default access attribute of a struct is public, whereas, as we have already seen, the default access attribute for a class is private. A common use of structs in C++ is for classes that contain only public data members.
 


Message édité par skelter le 18-03-2004 à 14:04:05
Reply

Sujets relatifs:

Leave a Replay

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