內我有一個叫頭文件中的下列方法「filter.h」:我注意到C++不能調用方法(使用模板)從模板方法
namespace std{
//some code
template <class T, class S, class BorderMethod>
tImage<T> binomial(const tImage<T> &in, const size_t k = 3) {
//do some computations
tImage<T> img = in.convolve<T, BorderMethod>(in, kernel);
return img;
}
}
第一件事:定義這個方法發生在頭文件中。那是標準程序嗎?
現在,實際的問題:調用方法convolve
將不起作用,即使in
確實擁有這樣的方法。這裏的類tImage<T>
內的方法convolve
的定義:
tImage<T> convolve(const gravis::tImage<T>& image, const gravis::tArray<typename tImageTraits<T>::Float_t>& kernel);
如何我一定要調用這個函數?
'in'是'const'參數,所以非''constst'成員函數不能被調用。 – hmjd 2013-03-18 21:07:41
'binomial'似乎認爲'convolve'是一個函數模板,但'convolve'看起來不像函數模板(只是模板類的成員函數)。 – aschepler 2013-03-18 21:08:21
爲什麼你的代碼在'namespace std'中?添加到'std'名稱空間(非專業化)是非法的。 – Praetorian 2013-03-18 21:17:37