可以返回模板吗?
这就是我一直在尝试的,但这不起作用。
template<int degree>
class Polynomial
{
public:
... ususal stuff ...
// Polynimal<degree - 1>
Polynomial derivative() { /* returns a different template */ }
};
int main()
{
Polynomial<3> cubic;
Polynomial<2> parabola;
parabola = cubic.derivative();
}这个是可能的吗?我错过了什么小金块?
发布于 2011-06-10 03:35:17
您可以将成员函数设置为函数模板:
template<int ret_degree>
Polynomial<ret_degree> derivative() { /* returns a different template */ }或者,如果你知道返回多项式的次数,你可以这样做:
Polynomial<degree-1> derivative() { /* returns a different template */ }发布于 2011-06-10 03:37:42
值在编译时是已知的,因此您可以在返回类型中使用degree -1作为degree参数:
template<int degree>
class Polynomial
{
public:
Polynomial<degree-1> derivative()
{
Polynomial<degree-1> d;
//...
return d;
}
};
int main() {
Polynomial<3> cubic;
Polynomial<2> parabola;
parabola = cubic.derivative();
return 0;
}演示:http://www.ideone.com/44Pc7
发布于 2011-06-10 03:37:12
我假设你想要这个:
template<int degree>
class Polynomial
{
public:
... ususal stuff ...
// Polynimal<degree - 1>
Polynomial< degree-1 > derivative() {
Polynomial< degree-1 > res;
//assign values
return res
}
};确保在您的Polynomial<0>专门化中,derivative方法不存在。
https://stackoverflow.com/questions/6298222
复制相似问题