Je pose une question de ne pas il y a longtemps: C++ Runtime Knowledge of Classes et la réponse que je suis revenu d'un utilisateur StackOverflow « Denice » est une URL vers un site Web Meatspace: C++ runtime class registration.
Je pense que c'est une manière vraiment cool d'utiliser des templates et d'instancier des objets qui sont tous dérivés d'une classe de base, donc quand j'ai 10 fichiers C++, ils peuvent tout simplement ajouter AUTO_REGISTER_BASE() en bas, et Lorsque tout est terminé et lié, seules les classes/fichiers qui l'ont créé seront enregistrés. Ainsi, à l'exécution, vous pouvez basculer entre les différentes classes disponibles et celles qui ne sont pas disponibles ne sont pas enregistrées et ne peuvent donc pas être accidentellement appelé.
Il existe de nombreuses façons de faire des notifications d'événements dépendantes du système d'exploitation (select(), kqueue(),/dev/epoll, Solaris a sa propre chose, poll()), et j'avais besoin de tous les Les fichiers de classe existent dans le répertoire, mais en fonction du système d'exploitation sur lequel le Makefile a été exécuté, il n'en compile que certains. J'avais besoin d'un moyen de savoir au moment de l'exécution lesquels étaient disponibles, et d'avoir un moyen pour le programmeur d'utiliser la bibliothèque pour sélectionner sa préférence, mais s'il était indisponible pour utiliser celui qui avait le sens le plus logique pour la plate-forme avoir des poids qui leur sont assignés).
Le code ci-dessus m'a aidé à atteindre cet objectif, avec quelques modifications lourdes, mais cela m'a quand même aidé!
Je pense Boost Metaparse est une chose vraiment incroyable https://github.com/boostorg/metaparse https://github.com/sabel83/metaparse_tutorial –