我解釋我的問題。我想用模板通用的東西編碼數學。到目前為止,我已經上了兩節課。我有一個
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<polynomial<rational<int>>>。到目前為止,這有效。但我想在這些類上添加一個衍生物。我也想class<T>在 T 上使用它的定義來定義它。這是可以做到的。但是我怎樣才能使這個 Derivative 在 int、double、onfractional<int>等上為 =0 呢?這就像一個專業化,但是對于我沒有指定的每種型別......謝謝!在此之后,我嘗試模板化矩陣的東西......
目標是盡可能使用模板 :-D 接下來我想為多項式使用幾個變數......這是一個很棒的專案!
感謝您的幫助/任何資訊=)
我認為答案是這樣的:
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 );}
這管用嗎 ?:-/ 我會盡快嘗試...
uj5u.com熱心網友回復:
我想定義一個每次都回傳 0 的函式 Derivative,但我希望我的導數回傳為類多項式和類小數計算的東西。這是我現在唯一的問題。
您可以通過多載導數函式來做到這一點:
#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{});
}
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/473690.html
上一篇:動態陣列的輸出問題
下一篇:解包可變引數并相應地傳遞它的元素
