這就是我想要實現的。葉組件繼承Component<ParentT>
,其他人將繼承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;
...
};
但問題是模板參數入門重新聲明。我不能將第二個繼承第一個,因爲第二個繼承了第一個。
error: redeclared with 2 template parameter(s)
note: previous declaration ‘template class Component’ used 1 template parameter(s)
目前忽略可變參數模板,模板具有固定數量的參數;一個Component <>'不能同時具有一個和兩個參數。這看起來像一個[XY問題](http://meta.stackexchange.com/q/66377/166663) - 你究竟想要完成什麼? – ildjarn 2012-08-05 06:31:31
那麼建模它的好方法是什麼? '組件'? –
2012-08-05 06:32:40
這取決於 - 爲什麼你要基地和孩子有相同的名字?給他們不同的類型名稱,你沒有問題。 – ildjarn 2012-08-05 06:33:12