#include <iostream>
namespace oo{
class A{
public:
template<typename T>
static T get_value(){return static_cast<T>(55);}
};
template <typename T=A>
class B{
public:
static double f(){return T::get_value<double>();}
};
}
int main(int argc, char *argv[])
{
using std::cout;
using std::endl;
cout << oo::B<oo::A>::f() << endl;
return 0;
}
考虑到这里的示例,它编译时出现错误“不允许类型名称”,它指的是“double”和“get_value()”中的参数。
有人通过重写函数 f() 来纠正这个错误,如下所示:
static double f(){return T::template get_value<double>(); }
然而,我不太明白这里“模板”的使用。谁能给我解释一下,好吗?
提前感谢您的评论。