tipos sirven que programacion plantillas para modificadores manejo los funciones con arreglos ambiente c++ templates function member

c++ - sirven - Puntero de función para funciones miembro de clase de plantilla



plantillas en c++ (2)

Tengo una clase de plantilla definida (en parte) como

template <class T> MyClass { public: void DoSomething(){} };

Si quiero llamar a DoSomething desde otra clase, pero ser capaz de hacer esto para múltiples tipos de ''T'' en el mismo lugar, estoy atascado en una idea ya que los punteros de las funciones del método están restringidos al tipo de clase. Por supuesto, cada MyClass es de un tipo diferente, por lo que no puedo almacenar punteros a MyClassDoSomething () de una manera "polimórfica".

Mi caso de uso es que quiero almacenar, en una clase de espera, un vector de indicadores de función para ''Hacer algo'', de modo que pueda emitir una llamada a todas las clases almacenadas desde un solo lugar.

¿Alguien tiene alguna sugerencia?


Ok, entonces la solución functor no funciona como lo necesita. Quizás debería tener su clase de plantilla heredando de una clase base común de "Interfaz". Y luego usas un vector de esos.

Algo como esto:

class Base { public: virtual ~Base(){} virtual void DoSomething() = 0; } template <class T> class MyClass : public Base { public: void DoSomething(){} }; std::vector<Base *> objects; objects.push_back(new MyClass<int>); objects.push_back(new MyClass<char>);


Ya sabes, eso es justo lo que necesitaba hacer. Bizzarly lo había descartado desde el principio como una solución válida para mi uso, por razones que ahora se me escapan. Creo que estaba cegado por algunas cosas de metaprogramación que estoy haciendo en el mismo lugar para el despacho en tiempo de compilación (es decir, confundir el tiempo de compilación y el tiempo de ejecución en mi cerebro embrutecido).

Gracias por las sacudidas!