我有一个从 unary_function 继承的仿函数类:
template<class T>
class Matcher : public std::unary_function<T, bool>
{
private:
int m_match;
public:
Matcher(int valToMatch) : m_match(valToMatch) { };
bool operator() (T toTest)
{
return T.prop == m_match;
}
}
使用以下其中一项的函数:
void DoStuff(std::unary_function<ThisType, bool> & pred,
vector<ThisType> & stuffToTest)
{
for(vector<ThisType>::iterator it = stuffToTest.begin();
it != stuffToTest.end(); ++it)
{
if(pred(*it)) // <<< Compiler complains here
{
// do stuff
}
}
}
原调用函数:
Matcher myMatcher<ThisType>(n);
// have vector<ThisType> myStuff
DoStuff(myMatcher, myStuff);
据我所知,我有一个模板仿函数,我正在构造一个带有 ThisType 类型的实例,我将它传递给需要一个 unary_function 参数的函数并使用 ThisType 的实例调用。
但是编译器抱怨“术语不会评估为带 1 个参数的函数”。
我错过了什么?