ошибка C2678: двоичный '=': не найден оператор, который принимает левый операнд типа 'const Recipe' (или нет приемлемого преобразования)

Я пытаюсь отсортировать вектор, содержащий int и строку в каждом элементе. Это вектор типа класса, называемый векторными рецептами. Получив указанную выше ошибку, вот мой код:

В моем файле Recipe.h

struct Recipe {
public:
    string get_cname() const
    {
        return chef_name;
    }
private:
    int recipe_id;
    string chef_name;

В моем файле Menu.cpp

void Menu::show() const {
    sort(recipes.begin(), recipes.end(), Sort_by_cname());
}

В моем файле Menu.h

#include <vector>
#include "Recipe.h"
using namespace std;

struct Sort_by_cname 
{
    bool operator()(const Recipe& a, const Recipe& b)
    {
        return a.get_cname() < b.get_cname();
    }
};

class Menu {
public: 
    void show() const;
private
    vector<Recipe> recipes;
};

Что я делаю не так?

6
задан ildjarn 17 October 2011 в 23:15
поделиться