所有権、パイプラインのような相互作用、ステートマシンの動作など、何度も必要なオブジェクトの動作があります。これは、c++に関する非常に有名な本で「ポリシー」と呼ばれる新しいデザインパターンを試す良い機会だと思いました。
今、クラスを作成するのに苦労しています
template <
class T,
template <typename T> class pOwnership
template <typename T> class pInteraction
>
class object : public pOwnership<T>, public pInteraction<T>
{...}
これは、所有権と相互作用を扱う2つのポリシーを取る必要があります。たとえば、pOwnershipにはメソッドがあります
void add(T &obj)
内部リストにオブジェクトを追加します
std::vector<T*>.
(別の所有権ポリシーを使用します。たとえば、所有権が必要ない場合、void add(T&obj)も宣言されていない可能性があり、間違ったアプリケーションコードを使用するとコンパイル時エラーが発生します)
これで、タイプTが最終的なポリシーホストクラスになります。これは、オブジェクトクラスを意味します。
typedef template<object, pOwnershipRecursive, pInteractionPipeline> myObject;
もちろん、オブジェクトはそれ自体がテンプレート型であるため、コンパイラエラーが発生します。
myObjectのようなクラスをどのように実現できますか?