• Miércoles 25 de Noviembre de 2020, 01:06

Autor Tema:  Traducir Una Plantilla De C++ A C#  (Leído 1396 veces)

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Traducir Una Plantilla De C++ A C#
« en: Jueves 28 de Junio de 2007, 04:31 »
0
Bueno, le he estado buscando, pero no le he dado en el clavo, y es que nunca entendi muy bien las plantillas avanzadas en C++  :unsure: . basicamente me gustaria que alguien me dijera a que traduce la siguiente plantilla:
Código: Text
  1.  
  2. class MemberFunctionSlot
  3. {
  4. public:
  5.   virtual ~MemberFunctionSlot() {};
  6.   virtual bool execute(const EventArgs& args) = 0;
  7. };
  8.  
  9. template<typename T>
  10. class MemberFunctionPointer :
  11.   public MemberFunctionSlot
  12. {
  13. public:
  14.   typedef bool (T::*MemberFunction)(const EventArgs&);
  15. public:
  16.   MemberFunctionPointer() :
  17.     d_undefined(true)
  18.   {}
  19.   MemberFunctionPointer(MemberFunction func, T* obj) :
  20.     d_function(func),
  21.     d_object(obj),
  22.     d_undefined(false)
  23.   {}
  24.   virtual ~MemberFunctionPointer() {}
  25.  
  26.   virtual bool execute(const EventArgs& args)
  27.   {
  28.     if(!d_undefined) return (d_object->*d_function)(args);
  29.     return false;
  30.   }
  31. protected:
  32.   MemberFunction  d_function;
  33.   T*        d_object;
  34.   bool      d_undefined;
  35. };
  36.  
  37.  

Aqui pongo la aproximacion que he hecho en C#:

Código: Text
  1.  
  2. public class MemberFunctionSlot
  3. {
  4.     public virtual bool execute(EventArgs args);
  5. }
  6.  
  7. public class MemberFunctionPointer<T> : MemberFunctionSlot
  8. {
  9.     public bool MemberFunction(EventArgs args);
  10.     public MemberFunctionPointer()
  11.     {
  12.         d_undefined(true);
  13.     }
  14.     public MemberFunctionPointer(MemberFunction func, T obj)//Esta linea me da error
  15.     {
  16.         d_function(func);
  17.         d_object(obj);
  18.         d_undefined(false);
  19.     }
  20.  
  21.     public virtual bool execute(EventArgs args)
  22.     {
  23.         if (!d_undefined) return (d_object.d_function)(args);
  24.         return false;
  25.     }
  26.     protected MemberFunction d_function;//esta linea me da error
  27.     protected T d_object;
  28.     protected bool d_undefined;
  29. }
  30.  
  31.  
El error que me marca es el siguiente:

Citar
C:\CvsProjects\proyecto-x\alfa\jubilee\QuickGUI\src2\QuickGUIMemberFunctionPointer.cs(36,38): error CS0118: 'Cm.QuickGUI.MemberFunctionPointer<T>.MemberFunction(System.EventArgs)' es 'método' pero se utiliza como 'tipo'
C:\CvsProjects\proyecto-x\alfa\jubilee\QuickGUI\src2\QuickGUIMemberFunctionPointer.cs(50,19): error CS0118: 'Cm.QuickGUI.MemberFunctionPointer<T>.MemberFunction(System.EventArgs)' es 'método' pero se utiliza como 'tipo'

Si alguien me puede iluminar que estoy haciendo mal y como lo puedo arreglar, se lo agradecere

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================