我有一個函數,它需要一個「auto」並返回一個「auto」。該函數使用數字類型(例如,複數,整數或雙精度)。但是,根據函數的結果,我需要明確地返回一些內容。例如,如果將一個複數傳遞給函數,如果數字的「實數」部分小於零,則需要返回「複數(0,0)」。代碼看起來類似以下內容:明確返回模板參數
if(myNumber<0){ return 0.0;} else{ return myNumber; }
當然現在我有超載「小於」操作,但困難的是如何讓返回0時mynumber的不是雙。我已經重載了「=」運算符來允許將雙精度賦值給複數,但是我仍然在編譯錯誤。
有什麼好方法可以做到這一點?
編輯:
我的完整代碼如下所示。再次
auto BSCall(const auto &S0, const auto &k, const auto &discount, const auto &sigma){
if(sigma<=0){
return 0.0;
}
else{
double s=sqrt(2.0);
auto d1=log(S0/(discount*k))/(sigma)+sigma*.5;
return S0*(.5+.5*erf(d1/s))-k*discount*(.5+.5*(erf((d1-sigma)/s)));
}}
編輯:
事實證明,我沒有我的課具有了雙重構造。我的代碼工作時,我有運算符「=」重載和構造函數有一個單一的雙。
「我有一個函數w這需要一個「自動」並返回一個「自動」。 「這並不在C++ 14存在。您使用的是GCC的擴展? –
是您的複合型'的std ::複雜'? –
不,我創建了自己的類...我希望它是適用於其他數值類型爲好。 – user9403