假设我们有
template<typename T>
class Base
{
...
protected:
template<typename U>
void compute(U x);
...
};
现在我想从派生类中调用此方法。使用非模板成员函数,我通常会使用using ...
声明或访问成员this->...
。但是,它不清楚如何访问模板成员:
template<typename T>
class Derived : public Base<T>
{
// what's the correct syntax for
// using ... template ... Base<T>::compute<U> ... ?
...
void computeFloat()
{
float x = ...;
compute<float>(x);
}
void computeDouble()
{
double x = ...;
compute<double>(x);
}
...
};
答案 0 :(得分:1)
更容易。你可以写:
void computeFloat() {
float x = .1;
this->compute(x);
}
类型是自动推断的。
修改强>
对于一般情况,当无法推断出类型时,您可以使用:
Base<T>::template compute<float>();
或者:
this->template compute<float>();
对于示例,我使用了没有参数的compute
函数。