Forum Programmation.c++ Lister les méthodes et membres d'une classe

Posté par  .
Étiquettes : aucune
0
21
déc.
2005
Salut à tous,

Je me remet au C++ après de longues années de java et je souhaiterais
accéder à tous les membres d'une classe facilement sans avoir
à me taper toutes les lignes de codes identiques. Pour cela, en java il y
les méthodes de la classe Class qui sont très pratiques :

getDeclaredMethod() et getDeclaredFields()

Elles retournent respectivement la liste des méthodes et la liste des membres de la classe.

Comment je peux faire la meme chose en C++...

Merci d'avance.
Xavier
  • # .

    Posté par  . Évalué à 2.

    Il me semble que ça n'existe pas en standard en C++. Mais si tu googueulise "C++ introspection" tu trouvera peut etre des paliatifs ( m'enfin ca vaut pas l'introspection java ).
    • [^] # Re: .

      Posté par  . Évalué à 2.

      et celle de java ne vaut surement pas celle de Common Lisp ;)
  • # bah merde alors :-/

    Posté par  . Évalué à 1.

    C'est pas le genre de trucs que l'on fait tous les jours mais c'est super
    pratique ! je ne m'attendais pas à ça de la part du C++... comment je suis
    hyper deçu ! :-(

    Merci a+
    Xavier
    • [^] # Re: bah merde alors :-/

      Posté par  . Évalué à 3.

      C++ est un language statique, c'est comme ça, on fait avec : il est adapté à certains besoins, mais pas à tous ;-)

      C++ et Java diffèrent, donc l'architecture des programmes diffère. Fait des conceptions plus 'C++' et tu seras moins déçu!
  • # Question idiote..

    Posté par  (site web personnel) . Évalué à 1.

    Pour quel besoin cherchais-tu comment on introspectait en C++ ?

    Parce que, en supposant que cela soit pour un besoin de serialization, il existe déjà quantité de bibliothèques qui facilitent la tâche finale à réaliser.
    • [^] # Re: Question idiote..

      Posté par  . Évalué à 2.

      J'ai un formulaire multi-tab avec plein de cases à cocher et de zones de saisie,
      etc.. et je voudrais dans mon constructeur générer certains des signaux (slot)
      associés aux differents objets. Y'a bien moyen en QT de récupérer les "enfants"
      d'un formulaire, mais encore faut-il que la génération à partir du .ui ait bien
      associé les objets au formulaire mais ce n'est pas toujours le cas... il faudrait
      faire une recherche des sous-enfants etc... enfin c'est trop lourd :-/
      voilà, je pensais que s'était possible en C++.
      • [^] # Re: Question idiote..

        Posté par  . Évalué à 2.

        Ha, mais en Qt, c'est tout facile ce que tu demandes ;-)

        Regarde la doc de QObject (la classe dont tout le monde hérite), il y a une méthode findChildren qui recherche récursivement tous les enfants...

        Par exemple, pour récupérer tous les QCheckBox de ton dialog:
        QList<QCheckBox *> widgets = ton-dialog-à-toi.findChildren<QCheckBox *>();

        Attention à faire le findChildren =>après<= avoir créé les checkboxes et cie...

        (mon exemple est en Qt4, en Qt3, il faut regarder la méthode queryList de QObject, c'est un chouilla plus compliqué mais tu devrais t'en sortir)
        • [^] # Re: Question idiote..

          Posté par  . Évalué à 1.

          Effectivement queryList() répond à mes besoins ! J'avais trouvé children()
          mais ca ne fesait que retourner la liste directe des "sous-enfants" et du coup
          j'avais laché l'affaire !!!

          Excellent ! Merci beaucoup !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.