これは私が達成したいものです。葉のコンポーネントは、他の人がComponent<ParentT, ChildT>
テンプレートパラメータの再宣言
template <typename T>
class Component{
protected:
typedef Component<T> ParentComponentT;
...
};
template <typename ParentT, typename ChildT>
class Component: public Component<ParentT>{
protected:
typedef std::vector<ChildT*> CollectionT;
...
};
を継承し、Component<ParentT>
継承されます。しかし、問題は、テンプレートのパラメータが再宣言なっています。 2番目のものが最初のものを継承するので、2番目のものを最初のものの上に移動することはできません。
error: redeclared with 2 template parameter(s)
note: previous declaration ‘template class Component’ used 1 template parameter(s)
現在、可変長テンプレートを無視すると、テンプレートには固定数のパラメータがあります。 1つの「Component <>」は1つのパラメータと2つのパラメータの両方を持つことはできません。これは[XY問題](http://meta.stackexchange.com/q/66377/166663)のようになります。実際に何を達成しようとしていますか? – ildjarn
それをモデル化する良い方法は何ですか? 'Component'? –
それは依存します - あなたはなぜベースと同じ名前を持つ子供を望みますか?それらに異なるタイプの名前を付けてください。問題はありません。 – ildjarn