Je travaille sur le développement d'un moteur de jeu 2D assez robuste comme base pour que d'autres jeux puissent être construits en tant que projet for fun (je sais qu'il y a déjà des choses qui font ça, mais c'est pas drôle).C++ passage de message de type exception
J'essaie de trouver un bon moyen de faire passer des messages entre les classes dans le moteur. Au début, je pensais à utiliser une hiérarchie d'exceptions et à les lancer chaque fois que quelque chose l'exigeait. Mais au fur et à mesure que je me développais, je me suis rendu compte qu'il y avait un grand nombre d'exceptions jetées, car elles étaient utilisées pour des choses assez courantes (une partie des sous-routines qui traitent la pathfinding et la localisation des unités). le plateau de jeu beaucoup). Les exceptions étaient utilisées pour des choses comme le chemin parcouru par une unité dans le chemin et devait contourner cela, il lancerait une exception TileOccupied et le pathfinding pourrait gracieusement gérer cela et continuer. Comme on peut s'y attendre, cela a créé beaucoup d'exceptions.
Internet m'a dit que les exceptions sont coûteuses en raison de tout le traitement d'exécution dont elles ont besoin. Mais ils gèrent parfaitement ce dont j'ai besoin, c'est-à-dire pouvoir renvoyer un message à l'appelant même à travers des sous-routines de branchement pour indiquer quand quelque chose s'est passé ou quelque chose n'était pas comme prévu.
Existe-t-il un moyen propre/efficace de le faire en C++? Ou suis-je en train de structurer les choses très mal si j'utilise ce type de notification? Je suis encore à apprendre, donc toutes les suggestions seraient grandement appréciés (et je suis prêt à lire/apprendre toutes les références que vous pouvez jeter mon chemin)
Modifier Je suis en train de le faire dans la norme C++ BTW . Je l'écris sur linux, et je veux qu'il compile et soit exécutable indépendamment de la plate-forme. J'utilise actuellement Boost.
Des exceptions doivent être utilisées pour des conditions exceptionnelles. Ne les utilisez jamais pour une logique de programme "normale". – Cogwheel
Je m'en rends compte maintenant. C'est pourquoi j'essaie de trouver une meilleure façon de gérer le même style d'utilisation sans avoir à utiliser des exceptions – Veaviticus
Utilisez-vous un cadre? Boost, .Net, etc? – Caladain