我想實現三個功能,有很多錯誤都具有相同簽名:C++模板參數不明確
error C2782: 'T0 ColorBurn(T0,T0)' : template parameter 'T0' is ambiguous
error C2782: 'T1 ColorDodge(T1,T1)' : template parameter 'T1' is ambiguous
在那裏我有犯了一個錯誤?
這是我的代碼:
template <class T0>
T0 ColorBurn(T0 base, T0 blend)
{
return (blend == 0.0) ? blend : std::max((1.0 - ((1.0 - base)/blend)), 0.0);
}
template <class T1>
T1 ColorDodge(T1 base, T1 blend)
{
return (blend == 1.0) ? blend : std::min(base/(1.0 - blend), 1.0);
}
template <class T>
T BlendVividLightf(T base, T blend)
{
return (blend < 0.5) ? ColorBurn(base, (2.0 * blend)) : ColorDodge(base, (2.0 * (blend - 0.5)));
}
調用BlendVividLightf的樣本:
static pixel_t blend_vivid_light(pixel_t _p1, pixel_t _p2)
{
pixel_t po;
po.r = BlendVividLightf(_p1.r, _p2.r);
....
}
pixel_t - is my struct for rgb values:
typedef struct
{
float r;
float g;
float b;
} pixel_t;
什麼類型爲T在BlendVividLightf。請顯示該功能的呼叫。 – hansmaad
我已更新我的問題 –
'_p1.r'和'_p2.r'類型爲'double'?如果不是,那麼會導致編譯錯誤。 – iammilind