c++ - 在模板中使用模板实例类型

标签 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

红酒

最佳答案

内部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/

相关文章:

c++ - 第一次使用socket编程。连接没有发生。

c++ - 如何控制QGridLayout中应该在GUI中绘制的Widgets?

c++ - 进入 unique_ptr 容器

c++ - basic_string<CharT> 与 CharT*

c++ - 从 C++ 模板返回 NULL

RAM 中的 C++ 堆栈和堆

c++ - 为什么我的C++代码不接受输入?我的代码有什么问题?

c++ - std::regex_match 在传递右值参数时给出错误的匹配结果

c++ - std::async 使用同一个线程,我的代码没有实现并行。

c++ - 需要跟踪 opencv Mats 的类型