Sto cercando una buona risorsa per conoscere una buona progettazione delle API per le librerie C ++, guardare oggetti / dll condivisi ecc. Ci sono molte risorse per scrivere belle API, belle classi, modelli e così via a livello di sorgente, ma a malapena nulla mettere insieme le cose in libs ed eseguibili condivisi. Libri come il software di progettazione C ++ su larga scala di John Lakos sono interessanti ma ampiamente obsoleti.
Quello che sto cercando è un consiglio, cioè sulla gestione dei modelli. Con i modelli nella mia API finisco spesso con il codice della libreria nel mio eseguibile (o altra libreria), quindi se risolvo un bug lì dentro non posso semplicemente implementare la nuova libreria ma devo ricompilare e ridistribuire tutti i client di quel codice. (e sì, conosco alcune soluzioni come provare ad istanziare almeno le versioni più comuni all'interno della libreria ecc.)
Sto anche cercando altri avvertimenti e cose da tenere a mente per mantenere la compatibilità binaria mentre si lavora su librerie C ++.
Esiste un buon sito Web o un libro su tali cose?
std::unique_ptr
è roba abbastanza nuova. Cosa pensavi fosse più adatto alla tua API proposta? Il modo in cui hai dovuto gestire manualmente tutte le risorse, garantendo virtualmente perdite e doppie eliminazioni, ad esempio? O il modo in cui molti dei tuoi tipi avevano nomi di una o due lettere, rendendo impossibile dividere il loro scopo?
unique_ptr
non sarebbe possibile scrivere un codice del genere.