gpt4 book ai didi

c++ - 错误 C2678 : binary '=' : no operator found which takes a left-hand operand of type 'const Recipe' (or there is no acceptable conversion)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:50 26 4
gpt4 key购买 nike

我正在尝试对每个元素中包含一个 int 和一个字符串的 vector 进行排序。它是一个称为 vector 食谱的类类型的 vector 。出现上述错误,这是我的代码:

在我的 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;
};

我做错了什么?

最佳答案

Menu::show()声明const ,所以在里面 Menu::recipes被认为已声明为 std::vector<Recipe> const .

显然,对 std::vector<> 进行排序改变它,所以 Menu::show()不能是 const (或者 Menu::recipes 必须是 mutable ,但在这种情况下这在语义上似乎不正确)。

关于c++ - 错误 C2678 : binary '=' : no operator found which takes a left-hand operand of type 'const Recipe' (or there is no acceptable conversion),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com