策略和模板
Policies and templates
本文关键字:策略 更新时间:2023-10-16
在Alexandrescu的书中,有一段代码真的让我感到困惑。
template <template <class Created> class CreationPolicy>
class WidgetManager : public CreationPolicy<Widget>
{
...
};
据我所知,它是模板中的模板类。因此,我们接受"已创建"并将其放入CreationPolicy类,然后从新创建的CreationPolicy类中公开继承WidgetManager。这怎么可能?在这里误解了什么?
CreationPolicy 是一个模板类,专门用于某个类 Created。
WidgetManager派生自专门用于创建Widget对象(WidgetManager正在管理的东西)的CreationPolicy。
Widget 的声明必须已可供编译器使用。
WidgetManager也是一个模板类,专门用于CreationPolicy(它本身就是一个模板化类)。
Alexandrescu所做的是将管理器与创建对象的方式分离。他还将创建方法与正在创建和管理的对象分离。
所以你可以这样做:
WidgetManager
WidgetManager
然后,您可以向经理 1 或经理 2 询问 Widget 对象,而不关心它们是如何创建的。
相关文章:
- C++17中的并行执行策略
- 运行时执行策略不同
- 编译器上的策略数据结构不起作用
- 我应该在简单的策略游戏中为各个派系使用类吗 - C++
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 没有执行策略的 std::transform_reduce 是可移植的吗?
- C++ 运算符修改/元编程策略,用于不那么冗长的语法
- 使用 Qt5 SQL 进行异步数据库访问的策略
- C++基于策略的设计:继承与组合
- 当PSO细粒度策略对使用AdsGetObject MSDN API的Windows操作系统生效时,如何获取用户密码到期日
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 如何实例化基于输入的策略模式
- 使用策略模式设计软件时出现的问题
- 在发送源代码时省略未使用的boost src文件的策略
- 使用 redis 进行日志缓存:是否可以创建逐出到 PostgreSQL 的逐出策略?
- CMAKE:前导或尾随空格(策略CMP0004)
- 转换非常长的字符串文本C++以满足最大行长策略
- 在插入顺序已知时填充 Eigen3 稀疏矩阵的策略
- C++ 中的执行策略
- 动态控制C++的执行策略类型