Вопрос о () перегрузке оператора - PullRequest
3 голосов
/ 01 августа 2011
    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 & lhs, const Message & rhs)

это правильно? Должно ли это быть bool operator () (постоянное сообщение & lhs, постоянное сообщение & rhs)

Этот код является примером учебного кода для Functor. можно увидеть здесь: http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html

Спасибо

1 Ответ

3 голосов
/ 01 августа 2011

Вы получили - это, вероятно, опечатка, должно читаться

bool operator()(const Message& lhs, const Message& rhs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...