如果我要写一个模板
template<class T>
class myTemplate{
...
};
C++11 或 C++14 中是否有语法允许我识别 myTemplate<T>*
的类型?在实际的模板声明中?
例如,编写如下内容的正确语法是什么
template <class T>
class myTemplate{
...
void myTemplate(myTemplate<T>*, int);
....
};
TIA
红酒
最佳答案
内部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
用于内部模板以避免与外部模板混淆。
关于c++ - 在模板中使用模板实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48127078/