Je suis à la recherche d'une bonne ressource pour en savoir plus sur la bonne conception d'API pour les bibliothèques C ++, la recherche d'objets partagés / DLL, etc. Il existe de nombreuses ressources sur l'écriture de belles API, de belles classes, de modèles et ainsi de suite au niveau source, mais à peu près rien sur rassembler les choses dans des bibliothèques et des exécutables partagés. Des livres comme Large-Scale C ++ Software Design de John Lakos sont intéressants mais massivement dépassés.
Ce que je recherche, c'est des conseils, c'est-à-dire sur la gestion des modèles. Avec des modèles dans mon API, je me retrouve souvent avec du code de bibliothèque dans mon exécutable (ou une autre bibliothèque), donc si je corrige un bogue, je ne peux pas simplement déployer la nouvelle bibliothèque, mais je dois recompiler et redistribuer tous les clients de ce code. (et oui, je connais des solutions comme essayer d'instancier au moins les versions les plus courantes dans la bibliothèque, etc.)
Je recherche également d'autres mises en garde et des choses à l'esprit pour conserver la compatibilité binaire tout en travaillant sur les bibliothèques C ++.
Existe-t-il un bon site Web ou un livre sur de telles choses?
std::unique_ptr
est assez nouveau. Qu'est-ce qui, selon vous, était le plus adapté à votre API proposée? La manière dont vous avez dû gérer manuellement toutes les ressources, garantissant virtuellement des fuites et doubles suppressions, par exemple? Ou la façon dont beaucoup de vos types avaient des noms à une ou deux lettres, rendant impossible la devinette?
unique_ptr
il ne serait pas possible d'écrire du code comme ça.