Estoy trabajando en la implementación de un mecanismo de reflexión en C++. Todos los objetos dentro de mi código son una subclase de Object (mi propio tipo genérico) que contiene un dato de miembro estático de tipo Class.¿Cómo pasar un puntero a la función que apunta al constructor?
class Class{
public:
Class(const std::string &n, Object *(*c)());
protected:
std::string name; // Name for subclass
Object *(*create)(); // Pointer to creation function for subclass
};
Para cualquier subclase de Object con un dato miembro de la clase estática, quiero ser capaz de inicializar 'crear' con un puntero al constructor de la subclase.
Aunque esto es de 6 años después del hecho - usted debe dar una gran cantidad de pensamiento de si realmente desea implementar su propio mecanismo de reflexión. En primer lugar, considere la posibilidad de establecer una "reflexión" en tiempo de compilación utilizando plantillas, type_traits y el principio SFINAE; luego prueba una de las bibliotecas de reflexión C++ existentes; y solo entonces consideraría intentarlo yo mismo. – einpoklum