【发布时间】:2011-08-01 18:36:25
【问题描述】:
class Message
{
public:
std::string getHeader (const std::string& header_name) const;
// other methods...
};
class MessageSorter
{
public:
// take the field to sort by in the constructor
MessageSorter (const std::string& field) : _field( field ) {}
bool operator (const Message& lhs, const Message& rhs)
{
// get the field to sort by and make the comparison
return lhs.getHeader( _field ) < rhs.getHeader( _field );
}
private:
std::string _field;
};
std::vector<Messages> messages;
// read in messages
MessageSorter comparator;
sort( messages.begin(), messages.end(), comparator );
对于这一行: 布尔运算符(const Message& lhs, const Message& rhs)
这是对的吗? 应该是 bool operator() (const Message& lhs, const Message& rhs)
此代码是 Functor 的教程示例代码。 可以在这里看到: http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html
谢谢
【问题讨论】:
-
很高兴从书籍中学习 C++。通常不会有很多错别字。