内我有一个叫头文件中的下列方法“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