我正在寻找一个很好的资源来学习C ++库的良好API设计,查看共享的对象/ dll等。在源代码级别上有很多资源可以编写漂亮的API,漂亮的类,模板等,但是几乎没有将它们放到共享的库和可执行文件中。约翰·拉科斯(John Lakos)的《大规模C ++软件设计》一书很有趣,但已经过时了。
我正在寻找的是关于处理模板的建议。在API中使用模板后,我通常会在可执行文件(或其他库)中获得库代码,因此,如果在那里修复错误,我将无法简单地推出新库,而必须重新编译和重新分发该代码的所有客户端。(是的,我知道一些解决方案,例如尝试实例化至少库中最常见的版本等)。
我还在寻找其他注意事项和在C ++库上保持二进制兼容性时需要注意的事项。
是否有一个很好的网站或关于此类事情的书?
我是这样处理的:sivut.koti.soon.fi/~terop/GameApi.html-即,虽然lib中有模板,但它们都不在api中
—
tp1 2012年
std::unique_ptr
是相当新的东西。您认为什么更适合您提出的API?例如,您必须手动管理所有资源的方式,实际上可以保证泄漏和重复删除?还是您的许多类型都有一个或两个字母名称,以致无法区分其目的?
@ tp1:但是您并没有注意到我确实处理了它们。您只是说了“ HANDLE THEM”,而没有做任何事情。我没有处理,现在呢?而不是使用不允许此类错误的RAII类。如果您曾经使用过
—
DeadMG 2012年
unique_ptr
,将无法编写这样的代码。
@ tp1:我注意到Env可以被破坏。就是这样。似乎根本没有任何功能可以管理对象。如果我想管理的内存比“我创建的所有东西”或“什么都没有”更细粒度,那么看来我很费劲。
—
DeadMG 2012年
请与软件工程聊天室进行更多交谈。问题或答案中可以包含任何有用的信息吗?
—
克里斯·