在模板中使用模板实例类型

时间:2018-01-06 11:52:09

标签: c++ c++11 templates c++14

如果我要写一个模板

  template<class T>
class myTemplate{
...
};

C ++ 11或C ++ 14中是否有语法允许我在实际模板声明中识别myTemplate<T>*的类型?

例如,编写类似

的正确语法是什么
template <class T>
class myTemplate{
...
void myTemplate(myTemplate<T>*, int);
....
};

TIA

维诺德

1 个答案:

答案 0 :(得分:1)

myTemplate<T>内,您可以将同一类型(作为方法参数)引用为myTemplate<T>,或简称为myTemplate。这也适用于指向此类型的指针。

所以你可以写

 myTemplate (myTemplate<T> *, int) {}

但也

 myTemplate (myTemplate *, int) {}

当您想要针对不同的myTemplate<T>类型引用T时,您必须明确它。因此,您可以为所有可能的myTemplate类型编写一个接受myTemplate指针的模板myTemplate构造函数,如下所示

template <typename U>
myTemplate (myTemplate<U> *, int) { }

显然,您必须避免内部模板的标识符T,以避免与外部模板混淆。