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