如果我要写一个模板
template<class T>
class myTemplate{
...
};
C ++ 11或C ++ 14中是否有语法允许我在实际模板声明中识别myTemplate<T>*
的类型?
例如,编写类似
的正确语法是什么template <class T>
class myTemplate{
...
void myTemplate(myTemplate<T>*, int);
....
};
TIA
维诺德
答案 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
,以避免与外部模板混淆。