2017-04-07 49 views
1

有没有更传统的方法将参数传递给基类模板?将模板参数传递给基类,简明表示法

template <class II, class ICI> 
class GraphBase : public GraphBaseOfBase<II, ICI> 
{ ... }; 

template <> 
class GraphBase<std::vector<int>::iterator, std::vector<int>::const_iterator> : 
    public GraphBaseOfBase< 
     std::vector<int>::iterator, 
     std::vector<int>::const_iterator> 
{ ... }; 
+3

[OT]:护理专业化超过'的std ::矢量< > :: iterator'(和一般的迭代器),因为你可能会有一些冲突,因为并不总是你期望的类型。 ('std :: vector :: iterator'可能是一个'int *'或一个真正的类,就像'std :: set :: iterator'和'std :: set :: iterator的类型一样'可能是相同的,或不)。 – Jarod42

+0

伟大的观察! @ Jarod42,之前从未想过...在代码评论中记住的新课程.. – WhiZTiM

+0

您可以使用'using'来缩短使用的主要类型。 '使用vi = typename std :: vector :: iterator;使用vic = std :: vector :: iterator;'然后'template <> 类GraphBase:public GraphBaseOfBase '。但不知道这是你想要的。 – Jarod42

回答

0

您可以使用using缩短所用的主要类型,是这样的:

using vec_it = typename std::vector<int>::iterator; 
using vec_cit = std::vector<int>::iterator; 

然后

template <> 
class GraphBase : public GraphBaseOfBase<vec_it, vec_cit> 
{ 
    //... 
};