[英]struct templates in c++
我已经学习了函数模板,类模板,模板专业化知识,但是现在我遇到了这个示例,它使其他所有内容无所适从,因为它与其他用法有很大不同,我只是不明白如何在此中使用它例如:
template <int n> struct Fibo
{
static int val;
};
template <> int Fibo<0>::val = 1;
template <> int Fibo<1>::val = 1;
template <int n> int Fibo<n>::val = Fibo<n-1>::val + Fibo<n-2>::val;
int CalcFibo(int n)
{
return Fibo<n>::val;
}
不确定我是否了解这里所做的事情(当然,我可以看到它与斐波那契有关,但是与类模板或函数模板相比,它的使用方式也是如此。我只是不明白这里发生了什么,我会很感激如果有人可以帮助我理解)
struct
模板和class
模板之间没有区别,除了struct
和class
es本身之间的区别(即,结构中的所有成员默认情况下都是公共的,而类中的所有成员默认情况下是私有的。)
模板元编程的这个经典示例并不特定于struct
; 使用类也可以轻松完成。 您只需要多键入一些即可指定val
成员是public
。
如您对问题的评论中所述,您的代码将无法编译。 问题出在CalcFibo
函数中,您在其中使用运行时值(参数n
)来实例化模板,该模板始终需要在编译时已知的值。 您可以将“功能”更改为以下形式:
template <int N> int CalcFibo () {return Fibo<N>::val;}
但我怀疑这就是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.