J'ai programmé Java trop longtemps, et j'ai retrouvé du C++. Je veux écrire du code qui donne une classe (soit un type_info, soit son nom dans une chaîne) peut créer une instance de cette classe. Pour simplifier, supposons qu'il suffit d'appeler le constructeur par défaut. Est-ce possible même en C++, et si ce n'est pas le cas dans un futur TR?Possible d'instancier l'objet étant donné son type en C++?
J'ai trouvé un moyen de le faire, mais j'espère qu'il y aura quelque chose de plus "dynamique". Pour les classes que je m'attends à instancier (c'est un problème en soi, comme je veux laisser cette décision à la configuration), j'ai créé une fabrique singleton avec une instance créée statiquement qui s'enregistre avec une autre classe. par exemple. pour la classe Foo, il y a aussi une FooFactory qui a une instance FooFactory statique, de sorte qu'au démarrage du programme le constructeur FooFactory est appelé, qui s'enregistre lui-même dans une autre classe. Ensuite, quand je souhaite créer un Foo à l'exécution, je trouve le FooFactory et l'appelle pour créer l'instance de Foo. Y a-t-il quelque chose de mieux pour faire cela en C++? Je suppose que je viens d'être gâté par une réflexion riche en Java/C#. Pour le contexte, j'essaie d'appliquer certains des concepts de conteneur IOC auxquels je suis tellement habitué dans le monde Java à C++, et j'espère pouvoir le rendre aussi dynamique que possible, sans avoir besoin d'ajouter une usine. classe pour chaque autre classe dans ma demande.
En guise de suivi, est-il possible de passer un "type" en C++? c'est à dire. passer pas un objet Foo, mais la classe Foo, en tant que paramètre à une fonction? L'équivalent Java que je pense est une méthode qui prend un paramètre de classe, et vous pouvez passer dans Foo.class – Greencpp