使用策略/模板的通用对象 有一种对象需要反复地进行,包括所有权、流水线式交互、状态机行为等。我认为这是一个很好的机会,尝试一种新的设计模式,叫做“策略”,它是一本关于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
};