在代理部分,四人组的设计模式说:
重载成员访问运算符并不是每种代理的好解决方案。一些代理需要准确地知道调用了哪个操作,而重载成员访问运算符在这些情况下不起作用。
[...]
在这种情况下,我们必须手动实现将请求转发给主体的每个代理操作。
[...]
通常,在将请求转发给主体之前,所有操作都会验证请求是否合法、原始对象是否存在等。一遍又一遍地编写这段代码很乏味。所以通常使用预处理器来自动生成它。
好的,哪个预处理器以及如何在 C++ 中使用?
在代理部分,四人组的设计模式说:
重载成员访问运算符并不是每种代理的好解决方案。一些代理需要准确地知道调用了哪个操作,而重载成员访问运算符在这些情况下不起作用。
[...]
在这种情况下,我们必须手动实现将请求转发给主体的每个代理操作。
[...]
通常,在将请求转发给主体之前,所有操作都会验证请求是否合法、原始对象是否存在等。一遍又一遍地编写这段代码很乏味。所以通常使用预处理器来自动生成它。
好的,哪个预处理器以及如何在 C++ 中使用?
我认为它们意味着围绕主题类自动生成包装器代码。一个示例是SWIG项目生成的包装器代码。
在 C++ 中实现一些设计模式的规范参考是
Alexandrescu 的现代 C++ 设计
关于使用 C++ 类型系统构建设计模式的技术的另一个很好的参考书是关于
Vandevoorde & Josuttis 的 C++ 模板
模板元编程的参考是
C++ 模板元编程:来自 Boost 和 Beyond 的概念、工具和技术,David Abrahams 和 Alesky Gurtovoy。