Estoy buscando un buen recurso para aprender sobre un buen diseño de API para bibliotecas de C ++, mirar objetos / dlls compartidos, etc. Hay muchos recursos para escribir buenas API, buenas clases, plantillas, etc. a nivel fuente, pero casi nada sobre poner cosas juntas en libs y ejecutables compartidos. Libros como el diseño de software C ++ a gran escala de John Lakos son interesantes pero están enormemente desactualizados.
Lo que estoy buscando es un consejo, es decir, sobre el manejo de plantillas. Con las plantillas en mi API, a menudo termino con el código de la biblioteca en mi ejecutable (u otra biblioteca), por lo que si soluciono un error allí, simplemente no puedo implementar la nueva biblioteca, sino que tengo que volver a compilar y redistribuir todos los clientes de ese código. (y sí, conozco algunas soluciones como tratar de crear instancias de al menos las versiones más comunes dentro de la biblioteca, etc.)
También estoy buscando otras advertencias y cosas para tener en cuenta para mantener la compatibilidad binaria mientras trabajo en bibliotecas C ++.
¿Hay un buen sitio web o libro sobre tales cosas?
std::unique_ptr
Es algo bastante nuevo. ¿Qué crees que era más adecuado para tu API propuesta? ¿La forma en que tenía que administrar manualmente todos los recursos, garantizando virtualmente fugas y eliminaciones dobles, por ejemplo? ¿O la forma en que muchos de sus tipos tenían nombres de una o dos letras, haciendo imposible adivinar su propósito?
unique_ptr
, no sería posible escribir código como ese.