Pimpl 是许多 C++ 代码中样板文件的来源。它们似乎是宏、模板和一些外部工具的组合可以帮助解决的问题,但我不确定最简单的方法是什么。我见过模板 http://www.ddj.com/cpp/205918714;jsessionid=UL4BVQ1WE0FE1QE1GHPSKHWATMY32JVN?pgno=1这有助于完成一些提升,但效果不大——您最终仍然需要为您尝试包装的类的每个方法编写转发函数。有更容易的方法吗?
我正在想象一个用作制作过程一部分的工具。您希望您的公共标头成为 pimpl 类,因此您提供一些输入文件,例如 pimpl.in,其中列出了您想要包装的类(未实现的 pimpl 类),然后检查该文件, pimpl 类被生成,并且在“make install”期间仅安装它们的标头(而不是原始类的标头)。问题是,如果没有成熟的 C++ 解析器,我看不出有什么方法可以做到这一点,甚至编译器供应商也无法做到这一点。也许这些类可以以某种方式编写,使外部工具的工作变得更容易,但我确信我最终会错过各种极端情况(例如模板化类和/或模板化成员函数)。
有任何想法吗?还有其他人已经解决这个问题了吗?
不,没有一个简单的答案。 :-( 我认为几乎每个 OO 专家都说“更喜欢组合而不是继承”,因此会有语言支持使组合比继承容易得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)