【发布时间】:2010-12-09 22:29:42
【问题描述】:
Pimpl 是许多 C++ 代码中样板的来源。它们似乎是宏、模板和一些外部工具帮助的组合可以解决的问题,但我不确定最简单的方法是什么。 I've seen templates 有助于做一些提升但并不多——您最终仍需要为您尝试包装的类的每个方法编写转发函数。有没有更简单的方法?
我在想像制作过程中使用的工具。您希望您的公共标头是 pimpl'd 类,因此您提供一些输入文件,例如 pimpl.in,其中列出了您想要包装的类(实现 un-pimpl'd),然后检查该文件,生成 pimpl 类,并且在“make install”期间仅安装它们的头文件(不是原始类的头文件)。问题是如果没有完整的 C++ 解析器,我看不到任何方法可以做到这一点,即使是编译器供应商也无法做到这一点。也许这些类可以以某种方式编写,使外部工具的工作更容易,但我确信我最终会错过各种极端情况(例如模板化类和/或模板化成员函数)。
有什么想法吗?有没有其他人已经为这个问题提供了解决方案?
【问题讨论】:
-
Lazy C++ 做了类似的事情。
标签: c++ templates build-process macros pimpl-idiom