不确定我是否在某个地方有一个简单的拼写错误,但是我在排序元组的问题时遇到了问题。
所以,我的deque看起来像这样:
std::deque<boost::tuple<unsigned int, unsigned int> > messages;
然后我打电话给我:
sort(messages.begin(), messages.end(), msg_sort_criteria);
我的排序功能:
bool msg_sort_criteria(boost::tuple<unsigned int, unsigned int> lhs, boost::tuple<unsigned int, unsigned int> rhs)
{
return boost::get<1>(lhs) < boost::get<1>(rhs);
}
我在stl_heap.h和stl_algo.h中遇到错误。 例如,
被叫对象类型“
<bound member function type>
”不是函数或 功能参数。
编辑:
为了澄清,这一切都发生在一个班级的私人成员中。
class Messages::MessageImpl{
private:
std::deque<boost::tuple<unsigned int, unsigned int> > messages;
bool msg_sort_criteria(boost::tuple<unsigned int, unsigned int> lhs, boost::tuple<unsigned int, unsigned int> rhs)
{
return boost::get<1>(lhs) < boost::get<1>(rhs);
}
void fn()
{
sort(msg_queue_.begin(), msg_queue_.end(), msg_sort_criteria);
}
}
答案 0 :(得分:1)
主要是从评论中重新发布。
将您的实施更改为:
class Messages::MessageImpl{
private:
std::deque<boost::tuple<unsigned int, unsigned int> > messages;
static bool msg_sort_criteria(boost::tuple<unsigned int, unsigned int> lhs,
boost::tuple<unsigned int, unsigned int> rhs)
{
return boost::get<1>(lhs) < boost::get<1>(rhs);
}
void fn()
{
sort(msg_queue_.begin(), msg_queue_.end(), &MessageImpl::msg_sort_criteria);
}
};