Mon intention est, chaque fois que j'ajoute une nouvelle classe dérivée, j'en ai besoin enregistré dans une liste de noms de classe dans un autre objet de classe afin que toutes les nouvelles classes puissent être utilisées pour un processus. Mais faire cela sans écrire quelque chose de plus que d'autres classes à la main prend plus de temps.C++ gérer plusieurs classes dérivées avec des mots-clés statiques ou des modèles indexés
J'ai beaucoup de classes dérivées à maintenir, comme les ajouter à une liste, vérifier leurs noms et des choses similaires. Maintenant, je suis prêt à rendre cela automatisé. Chaque classe dérivée contient un initialiseur de membre statique qui ajoute également son propre nom à la liste statique de la classe de base afin que le programmateur analyse cette liste et gère les préparations.
Quel est le danger d'incrémenter
// try until error, can compiler compile this?
while(noError)
{
tryInit(new MyClass<ctr>()).addToList();
}
// or
tryInit(new MyClass<2>()).addToList();
tryInit(new MyClass<3>()).addToList();
tryInit(new MyClass<4>()).addToList();
tryInit(new MyClass<5>()).addToList();
ce qui se passe s'il n'y a pas 5 classes dérivées? Y a-t-il un mot-clé au-delà de l'état statique qui effectue un chargement de classe dès le démarrage du programme, même sans déclaration directe ou autre chose?
Les classes ne sont pas des "modules", et les appeler ainsi obscurcit votre question. –
ok la fixer je suis désolé. –
Je n'ai aucune idée après avoir lu votre explication de ce que vous essayez de faire. Mais je peux répondre à la question directe. * "Que se passe-t-il s'il n'y a pas 5 classes dérivées?" * Si aucune spécialisation explicite n'est définie pour MyClass <5>, ni pour le modèle principal, vous obtiendrez une erreur de compilation ici. S'il y a une spécialisation explicite, elle sera utilisée. Sinon, le compilateur essaiera d'instancier le modèle principal avec '5' comme argument. –