Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancement d un void par une autre classe du progra

    22 mai 2018 à 11:53:01

    J ai besoin de lancé un void de la class joueur2 par la classe MenuJoueur avec une action d un bouton.

    Merci de vos reponces.

    -
    Edité par MisteurDesti 22 mai 2018 à 11:57:52

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2018 à 13:15:48

      Salut,

      Ca, ca ne veut pas dire grand chose : void, c'est le terme anglais qui signifie (littérallement) néant, rien, "quelque chose d'invalide".  Pourquoi voudrais tu récupérer quelque chose qui ne représente rien???

      En C, il est possible d'utiliser un pointeur sur void (void *) qui représente l'adresse d'une donnée dont... le type n'est pas connu au moment au moment où on fait appel à une fonction (mais qui doit être un pointeur sur un type bien particulier dans la fonction appelée, sous peine d'obtenir du grand n'importe quoi).

      En C++, on évitera autant que possible de l'utiliser : on préféreras sans doute avoir recours au paradigme générique.

      En java, ce qui s'en rapproche le plus, c'est la classe Object, qui est la classe de base de toute la hiérarchie de java, utilisée essentiellement par le ramasse-miettes.

      De manière générale, si tu peux éviter d'avoir recours à cette classe, il est largement recommander de l'éviter, car cela te place dans une position particulièrement inconfortable dans laquelle tu n'as absolument aucun contrôle sur le type de l'élément auquel tu gagne l'accès: ce pourrait tout aussi bien être une instance de Batiment qu'une instance de Animal, or, tu conviendras avec moi qu'il est pour le moins difficile de trouver le moindre point commun (en dehors de celui imposé par la présence du ramasse-miette, et qui est une sérieuse erreur de conception à mon goût ... mais bon, c'est ma culture C++ qui parle :D )entre un bâtiment et un animal !

      De plus, tu parles d'une classe MenuJoueur.  Si tu es dans une logique de création d'IHM, cette classe devrait sans doute contenir un ensemble de boutons.  C'est à dire un ensemble d'éléments qui implémentent l'interface Observable ou qui utilisent un système de signaux et de slots .

      L'utilisation de ces boutons devrait donc soit passer par la création d'une classe qui implémente l'interface observer, soit par le fait d'assurer la connexion d'une méthode de ta classe (qui attend les paramètres requis par le signa) au signal utilisé par le bouton; à charge pour toi (dans les deux cas) de mettre en place la logique qui devra être suivie dans la méthode utilisée pour signaler à l'observateur que l'observé a été "modifié" (même si c'est parce qu'on a cliqué dessus).

      Si tu es dans une logique d'application en mode console, la méthode showMenu que ta classe MenuJoueur pourrait tout aussi bien renvoyer une valeur entière qui indiquerait le choix effectué par l'utilisateur à la fonction qui y a fait appel.  A charge pour toi de mettre en place "tout ce qu'il faut" (de préférence en respectant le SRP) pour que les actions effectuées correspondent au choix de l'utilisateur ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait

      Lancement d un void par une autre classe du progra

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown