关于()运算符重载的问题

时间:2011-08-01 18:36:26

标签: c++ operator-overloading

    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 );

对于这一行: bool运算符(const Message&amp; lhs,const Message&amp; rhs)

这是对的吗? 应该是吗? bool operator()(const Message&amp; lhs,const Message&amp; rhs)

此代码是Functor的教程示例代码。 可以在这里看到: http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html

谢谢

1 个答案:

答案 0 :(得分:3)

你明白了 - 这可能是一个错字,应该阅读

bool operator()(const Message& lhs, const Message& rhs)