gpt4 book ai didi

c++ - 政策和模板

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:28 25 4
gpt4 key购买 nike

Alexandrescu 的书中有一段代码让我很困惑。

template <template <class Created> class CreationPolicy> 
class WidgetManager : public CreationPolicy<Widget>
{
...
};

据我所知,它是模板中的模板类。所以我们接受 'Created' 并将其放入 CreationPolicy 类,然后从新创建的 CreationPolicy 类公开继承 WidgetManager。这怎么可能呢?是不是误解了什么?

最佳答案

CreationPolicy 是一个模板类,专门针对某些已创建的类。

WidgetManager 派生自专门用于创建 Widget 对象(WidgetManager 正在管理的东西)的 CreationPolicy。

Widget 的声明必须已经对编译器可用。

WidgetManager 也是一个模板类,专用于 CreationPolicy(它本身就是一个模板类)。

Alexandrescu 所做的是将管理器与其创建对象的方式分离。他还将创建方式与正在创建和管理的对象解耦。

所以你可以这样做:

WidgetManager manager1 = ...;

WidgetManager manager2 = ...;

然后您可以向 manager1 或 manager2 询问 Widget 对象,而无需关心它们是如何创建的。

关于c++ - 政策和模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22912784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com