使用策略/模板的通用对象 有一种对象需要反复地进行,包括所有权、流水线式交互、状态机行为等。我认为这是一个很好的机会,尝试一种新的设计模式,叫做“策略”,它是一本关于C++的非常著名的书。

使用策略/模板的通用对象 有一种对象需要反复地进行,包括所有权、流水线式交互、状态机行为等。我认为这是一个很好的机会,尝试一种新的设计模式,叫做“策略”,它是一本关于C++的非常著名的书。,c++,C++,现在我很难创建一个类 template < class T, template <typename T> class pOwnership template <typename T> class pInteraction > class object : public pOwnership<T>, public pInteraction<T> {...} 将对象添加到内部列表中 std::vector<T*>.

现在我很难创建一个类

template <
  class T,
  template <typename T> class pOwnership
  template <typename T> class pInteraction
>
class object : public pOwnership<T>, public pInteraction<T>
{...}
将对象添加到内部列表中

std::vector<T*>.
std::vector。 (使用另一个所有权策略,例如,当我不需要所有权时,void add(t&obj)也可能未声明,如果使用错误的应用程序代码,则会导致编译时错误)

现在类型T应该是最终的策略主机类,表示对象类:

typedef模板myObject;
当然,对象本身是模板类型,这会导致编译器错误


如何实现像myObject这样的类?

您应该使用CRTP:

class myObject : public object<myObject, 
                 pOwnershipRecursive, 
                 pInteractionPipeline>
{
   // your real content here: 
   // an object that consists solely of policies is probably useless
};
类myObject:公共对象
{
//您在此处的真实内容:
//仅由策略组成的对象可能是无用的
};

“一本关于c++的非常有名的书”,非常有用,谢谢。即使我希望有一个不同的方法不需要另一个派生(使用CRTP,有策略->对象->对象,每个都包括动态多态性)
typedef template<object, pOwnershipRecursive, pInteractionPipeline> myObject;
class myObject : public object<myObject, 
                 pOwnershipRecursive, 
                 pInteractionPipeline>
{
   // your real content here: 
   // an object that consists solely of policies is probably useless
};