如何以模板类作为模板参数在模板类中正确定义模板函数

Posted

技术标签:

【中文标题】如何以模板类作为模板参数在模板类中正确定义模板函数【英文标题】:How to properly define template function in template class with a template class as a template parameter 【发布时间】:2019-05-19 20:13:03 【问题描述】:

当类有另一个类作为模板参数时,我在定义类函数时遇到问题。

例外是“模板参数列表应该对应一个模板参数列表”

template <class T, size_t N, class arr_traits<T>>
class NDimArray 
     void f();
 

 template <class T, size_t N, class arr_traits<T>>
 void NDimArray<T, N, arr_traits<T>>::f()   // here

【问题讨论】:

【参考方案1】:

好的,为 arr_traits 设置一个别名就可以了,这样我们就没有模板参数列表中的类了。

template <class T, size_t N, class array_traits = arr_traits<T>>
class NDimArray 
     void f();
 

 template <class T, size_t N, class arr_traits>
 void NDimArray<T, N, arr_traits<T>>::f()  

【讨论】:

以上是关于如何以模板类作为模板参数在模板类中正确定义模板函数的主要内容,如果未能解决你的问题,请参考以下文章

如何派生抽象模板类,模板类型作为函数参数 (C++11)

模板实现顺序表

c ++:在完全定义类之前使用类作为模板参数

C++入门C++ 函数模板&类模板

模板之类模板

类模板三种类模板参数