我一遍又一遍地需要对象行为,包括所有权、类似管道的交互、状态机行为等。我认为这是一个很好的机会,可以在一本关于 C++ 的非常著名的书中尝试一种称为“策略”的新设计模式。
现在我很难创建一个类
template <
class T,
template <typename T> class pOwnership
template <typename T> class pInteraction
>
class object : public pOwnership<T>, public pInteraction<T>
{...}
这应该采取两个政策来处理所有权和互动。例如, pOwnership 有一个方法
void add(T &obj)
它将一个对象添加到内部列表
std::vector<T*>.
(使用另一个所有权策略,例如当我不需要所有权时,也可能未声明void add(T &obj),如果使用错误的应用程序代码会导致编译时错误)
现在类型 T 应该是最终的策略宿主类,即对象类:
typedef template<object, pOwnershipRecursive, pInteractionPipeline> myObject;
当然object本身就是一个模板类型,导致编译器错误。
如何实现像 myObject 这样的类?