数学:模板专业= 0其他类

发布于 2025-01-27 10:11:45 字数 1232 浏览 4 评论 0原文

我解释我的问题。我想用模板一般事物编码数学。到目前为止,我上了两个课。我有一个,

template<typename T> class rational{
    T numerator;
    T denominator;
    operators and constructors
}

并且我有一个

template<typename T> class polynomial{
    vector<T> coefficients;
    int degree;
    operators and constuctors
}

,以便我可以使用Rational&lt; polyenmial&lt; int&lt; int&gt;&gt;&gt;。到目前为止,这起作用了。但是我想在那些班级上添加一个衍生物。我想在class&lt; t&gt;上使用它的定义也定义它。可以做到。但是,如何在int,double,on ractional&lt; int&gt;等上使此派生型为= 0?这就像一个专业化,但是对于我没有指定的每种类型...谢谢!之后,我尝试将矩阵的事物模板模板...

目标是使用模板尽可能远。 接下来,我想将几​​个变量用于多项式...这是一个很棒的Projet!

感谢您的帮助 /任何信息=)

我认为答案就像< / strong>:

template<typename T> T Derivative(T object){ // for any other object !
return T(0);}

template<typename T> polynomial<T> Derivative(polynomial<T> object)
return compute_of_derivative, using too Derivative over T too (for generality);}

template<typename T> rational<T> Derivative(rational<T> object) // kind P / Q
return compute_of_derivative, which is ( D(P)Q -Q D(P) /  Q^2 );}

这有效吗? : - /我会尽快尝试...

I explain my problem. I want to code math with template general thing. So far I've made two classes. I have a

template<typename T> class rational{
    T numerator;
    T denominator;
    operators and constructors
}

And I have a

template<typename T> class polynomial{
    vector<T> coefficients;
    int degree;
    operators and constuctors
}

these are made so that I can use rational<polynomial<rational<int>>> . This works so far. But I want to add a Derivative on those class. I want to define it on the class<T> using it's definition on T too. This can be made. But how can I make this Derivative be =0 on int, on double, on fractional<int>, etc ? It's like a specialization, but for every type which I didn't specifie ... Thanks ! After this, I try to template the matrix thing ...

the goal is to go as far as possible with templates :-D
Next I want to use several variables for polynomial ... It's a great projet !

Thanks for any help / any information =)

I think answer would be like :

template<typename T> T Derivative(T object){ // for any other object !
return T(0);}

template<typename T> polynomial<T> Derivative(polynomial<T> object)
return compute_of_derivative, using too Derivative over T too (for generality);}

template<typename T> rational<T> Derivative(rational<T> object) // kind P / Q
return compute_of_derivative, which is ( D(P)Q -Q D(P) /  Q^2 );}

is this working ? :-/ I will try it soon ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆沫 2025-02-03 10:11:45

我想定义每次返回0的函数导数,但是我
希望我的衍生产品返回为班级计算的东西
多项式和类别的分数。那是我唯一的问题
现在。

您可以通过超载衍生功能来做到这一点:

#include<iostream>

template<typename T> struct polynomial{};
template<typename T> struct rational{};

template<typename T>
auto derivative(T t) {  std::cout<<"I'm zero"<<std::endl;  }

template<typename T>
auto derivative(rational<T> t) { std::cout<<"I'm a rational number"<<std::endl; }

template<typename T>
auto derivative(polynomial<T> t) { std::cout<<"I'm a polynomial"<<std::endl; }

int main()
{
    derivative(rational<double>{});
    derivative(polynomial<double>{});
    derivative(int{});
}

demo

I want to define a function Derivative that returns 0 everytime, but I
want my derivative to return something computed for the class
polynomial and for the class fractional. That's my only problem
now.

You can do that by overloading the derivative function:

#include<iostream>

template<typename T> struct polynomial{};
template<typename T> struct rational{};

template<typename T>
auto derivative(T t) {  std::cout<<"I'm zero"<<std::endl;  }

template<typename T>
auto derivative(rational<T> t) { std::cout<<"I'm a rational number"<<std::endl; }

template<typename T>
auto derivative(polynomial<T> t) { std::cout<<"I'm a polynomial"<<std::endl; }

int main()
{
    derivative(rational<double>{});
    derivative(polynomial<double>{});
    derivative(int{});
}

DEMO

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文