Ich bin auf der Suche nach einer guten Ressource, um etwas über gutes API-Design für C ++ - Bibliotheken zu lernen, um gemeinsam genutzte Objekte / DLLs usw. zu betrachten. Es gibt viele Ressourcen zum Schreiben netter APIs, netter Klassen, Vorlagen usw. auf Quellenebene, aber kaum etwas darüber Zusammenfügen von Dingen in gemeinsam genutzten Bibliotheken und ausführbaren Dateien. Bücher wie Large-Scale C ++ Software Design von John Lakos sind interessant, aber massiv veraltet.
Was ich suche, sind Ratschläge zB zum Umgang mit Vorlagen. Mit Vorlagen in meiner API habe ich häufig Bibliothekscode in meiner ausführbaren Datei (oder einer anderen Bibliothek). Wenn ich dort einen Fehler behebe, kann ich die neue Bibliothek nicht einfach ausrollen, sondern muss alle Clients dieses Codes neu kompilieren und verteilen. (und ja, ich kenne einige Lösungen wie den Versuch, zumindest die gängigsten Versionen innerhalb der Bibliothek zu instanziieren usw.)
Ich suche auch nach anderen Vorsichtsmaßnahmen und Dingen, die ich beachten muss, um die Binärkompatibilität bei der Arbeit an C ++ - Bibliotheken zu erhalten.
Gibt es eine gute Website oder ein Buch über solche Dinge?
std::unique_ptr
ist ziemlich neues Zeug. Was genau haben Sie gedacht , war mehr geeignet zu Ihrem vorgeschlagenen API? Wie mussten Sie alle Ressourcen manuell verwalten, um beispielsweise Leckagen und doppelte Löschvorgänge praktisch zu gewährleisten? Oder die Art und Weise, wie viele Ihrer Typen einen oder zwei Buchstabennamen hatten, wodurch es unmöglich wurde, ihren Zweck zu erraten?
unique_ptr
, wäre es nicht möglich, Code wie diesen zu schreiben.