c++ 错误C2678二进制“==”:找不到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)[已关闭]

s5a0g9ez  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(406)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
当我编译我的c++代码时,我的visual studio 2022跳出一个错误,错误不出现在我的cpp文件中,而是出现在xutility文件中。

template <class _InIt, class _Ty>
_NODISCARD constexpr _InIt _Find_unchecked1(_InIt _First, const _InIt _Last, const _Ty& _Val, false_type) {
    // find first matching _Val
    for (; _First != _Last; ++_First) {
        if ( *_First == _Val) {
            break;
        }
    }

    return _First;
}

我在windows10电脑上编译代码。
这是我的源代码。

for (auto const &entry : all_cards){
    std::cout << '\n';
    std::cout << std::quoted(entry.first.get_name()) << " card stats:" << '\n';
    std::cout << "  Total number of cards: " << entry.second.size() << '\n';

    std::vector<std::set<playing_card>> decks;
    for (const auto& card : entry.second){
        for (auto const &entry : decks){
            if (std::find(decks.begin(), decks.end(), card) != decks.end()){
                decks.push_back({});
                decks.back().insert(card);
            } else {
                decks.insert(card);
            }
        }
    }

我原来的源代码有错误或?我怎么能修复它。

wko9yo5t

wko9yo5t1#

playing_card类没有const==运算符
以下是所需运算符的一些示例及其之间的区别:

  • 这里对象本身(左边)不是const,接受const对象(右边)
  • bool operator == (const playing_card &);
  • 这里对象本身是const并且接受const object
  • bool operator == (const playing_card &) const;

您需要将第二个方法(bool operator == (const playing_card &) const;)添加到类中,或者移除for循环中auto之前的const单词

for (auto& card : entry.second){
    for (auto const &entry : decks){
        if (std::find(decks.begin(), decks.end(), card) != decks.end()){
            decks.push_back({});
            decks.back().insert(card);
        } else {
            decks.insert(card);
        }
    }
}

相关问题