SubClass MUI en C++

9 sujets de 1 à 9 (sur un total de 9)

  • Vince

      #3158

      Bonsoir,

      je recherche un exemple d’utilisation/création de subclass en C++.

      DISPATCHERPROTO(Dispatcher)

      {

      DISPATCHERARG

      }

      me donne un:

      ANSI C++ forbids implicit conversion from `void *’ in initialization

      Donc si quelqu’un a un exemple d’utilisation d’un MUI_CustomClass en

      C++ avec dispatcher je suis preneur.

      Merci.

      Fab1

        #60663

        Reprends la macro en question et caste où il faut. Le C++ est plus strict en ce qui concerne les affectations de void *, notamment.

        Par exemple si on te passe un paramètre pouet de type void * et que tu veux l’associer à une var de type toto, va falloir explicitement faire :

        toto * t = (toto *) pouet;

        Vince

          #60664

          Dommage,

          on pert le caractère générique de la macro…

          En plus, elle est pas vraiment lisible, je vais essayer de comprendre

          comment elle est écrite et part quoi la remplacer.

          PS : Comment on voit ce que traduit le pre processeur de GCC ?

          j’aimerai bien voir comment il traduit la macro, cela m’aiderait

          fortement…

          A++

          Fab1

            #60665

            gcc -E pour avoir le source prémouliné.

            Sinon elle n’a rien de générique cette macro, elle n’est pas fournie directement avec mui, tu es donc obligé de la recopier toi même dans ton projet, alors ça ne pose pas de pb de la modifier.

            corto

              #60666

              Vince a écrit :

              Dommage,

              on pert le caractère générique de la macro…

              En plus, elle est pas vraiment lisible, je vais essayer de comprendre

              comment elle est écrite et part quoi la remplacer.

              J’utilisais aussi cette macro avant. Maintenant j’ai passé la plupart de mes projets avec les macros de l’archive SDI_headers. Ca passe partout (pub : voir ma doc sur la programmation portable) et ça fonctionne bien !

              Fab1

                #60667

                Corto,

                en C++ c’est peu probable que ça passe directement, vu qu’il faut caster quasiment toutes les affectations de void *.

                Vince

                  #60668

                  Bon, je vais essayer de la comprendre…

                  Oh risque d’avoir l’air d’insister mais si quelqu’un la déjà fait en

                  C++ je suis preneur pour un exemple…

                  Merki bocou !!

                  Fab1

                    #60669

                    Je sais plus d’où vient ta macro DISPATCHERPROTO, j’ai retrouvé qqch qui porte ce nom, et j’avais déjà modifié ça pour le C++ en fait…

                    J’ai ça (valable pour mos uniquement) :

                    #define DISPATCHERPROTO(name) static ULONG name##PPC(void); struct EmulLibEntry name = { TRAP_LIB, 0, (void(*)(void))&name##PPC }; static ULONG name ## PPC(void)

                    #define DISPATCHERARG DECLARG_3(a0, struct IClass *, cl, a2, Object *, obj, a1, Msg, msg)

                    La seule modification dans mes souvenirs est le cast en void(*)() pour la fonction.

                    D’autre part, en C++, tu n’auras plus les set() get() si je me souviens bien, donc il faudra appeler GetAttr() et SetAttrs().

                    Vince

                      #60670

                      effectivement

                      la sortie donne : (APTR)&func alors que EmulLibEntry attend un (void

                      *)()

                      Merci je vais pourvoir continuer mes essaies…

                    9 sujets de 1 à 9 (sur un total de 9)

                    • Vous devez être connecté pour répondre à ce sujet.

                    Forums AmigaOS, MorphOS et AROS Développement SubClass MUI en C++

                    Amiga Impact