erreur C2678: binary '=' : l'opérateur n'a pas trouvé ce qui prend de la main gauche opérande de type "const Recette" (ou il n'est pas acceptable de conversion)

Je suis en train de trier un vecteur qui contient un entier et une chaîne de caractères dans chaque élément. C'est un vecteur de type de classe appelé vecteur de recettes. Obtenir l'erreur ci-dessus, voici mon code:

Dans ma Recette.h fichier

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

Dans mon Menu.cpp fichier

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

Dans mon Menu.h fichier

#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;
};

Ce que je fais mal?

  • Nous montrer la ligne sur laquelle vous obtenez cette erreur...
  • Êtes-vous sûr que vous voulez trier sur la chaîne de valeur et pas la recette de l'id?
  • J'ai ajouté un c++ de la balise; il devrait être à cette question plus d'attention.
  • Avez-vous songé à l'aide d'un jeu au lieu d'un vecteur? De cette façon, il est triée par défaut, et vous n'avez pas à le faire mutable.
InformationsquelleAutor Richard | 2011-10-17