使用带有函数参数的算法函数 max_element
use algorithm function max_element with function parametrer
我在使用带有 3 个参数的 max_element 时遇到问题:
我的名单
list<T*> myList_;
函数
template<typename T>
T TheObject<T>::bigger () const{
return *(*(max_element(myList_.begin(), myList_.end(), compare)));
}
template<typename T>
bool TheObject<T>::compare(const T* a, const T* b)
{
return *a < *b;
}
为什么我有这个错误
Error 1 : 'TheObject::compare': function call missing argument
list; use '&TheObject::compare' to create a pointer to member obj.h
Error 2 : '_FwdIt std::max_element(_FwdIt,_FwdIt)' : expects 2
arguments - 3 provided obj.h
您提供给 std::max_element
(和其他标准算法)的函数不能是非静态成员函数,因为它不会作为成员函数被调用。 (std::max_element
不知道 this
可能是什么。)
您收到的第一条错误消息是准确的,但可能具有误导性。因为 compare
不是独立函数,而是非静态成员函数,所以不能将其用作函数指针,只能用作指向成员函数的指针。指向成员函数的指针的语法是 &Class::member。但是,修复它无济于事,因为 std::max_element
无法使用指向成员函数的指针作为其第三个参数。
我在使用带有 3 个参数的 max_element 时遇到问题: 我的名单
list<T*> myList_;
函数
template<typename T>
T TheObject<T>::bigger () const{
return *(*(max_element(myList_.begin(), myList_.end(), compare)));
}
template<typename T>
bool TheObject<T>::compare(const T* a, const T* b)
{
return *a < *b;
}
为什么我有这个错误
Error 1 : 'TheObject::compare': function call missing argument list; use '&TheObject::compare' to create a pointer to member obj.h
Error 2 : '_FwdIt std::max_element(_FwdIt,_FwdIt)' : expects 2 arguments - 3 provided obj.h
您提供给 std::max_element
(和其他标准算法)的函数不能是非静态成员函数,因为它不会作为成员函数被调用。 (std::max_element
不知道 this
可能是什么。)
您收到的第一条错误消息是准确的,但可能具有误导性。因为 compare
不是独立函数,而是非静态成员函数,所以不能将其用作函数指针,只能用作指向成员函数的指针。指向成员函数的指针的语法是 &Class::member。但是,修复它无济于事,因为 std::max_element
无法使用指向成员函数的指针作为其第三个参数。