gpt4 book ai didi

c++ - std::array 无法比较以我的类作为其元素的两个数组

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:02 26 4
gpt4 key购买 nike

当我使用 == 运算符比较它们时,我有两个相同大小并存储相同元素类型(我编写的类)的 std::array 编译器抛出此错误:.. .\include\xutility(2919): error C2672: 'operator __surrogate_func': 找不到匹配的重载函数

我尝试将两个数组与 vector 作为它们的元素进行比较并且它有效但是将数组与我编写的任何类进行比较我得到了那个错误。

测试类:

class Class {

int i;

public:
Class() {}
Class(const Class& other) {}
Class(Class&& other) {}
~Class() {}

Class operator= (const Class& other) {}
Class operator= (Class&& other) {}

BOOL operator== (const Class& other) {}

};

比较:

   std::array<Class, 3> a0 = {};
std::array<Class, 3> a1 = {};

if (a0 == a1)
"COOL";

我得到的错误:

...\include\xutility(2919): error C2672: 'operator __surrogate_func': no matching overloaded function found

最佳答案

如果您查看 std::arrayoperator== 的定义,您会注意到它是为 const 数组定义的。这意味着您只能将元素作为 const 访问,而您的 Classoperator== 不会这样做。

将其更改为将隐含的 this 作为常量:

BOOL operator== (const Class& other) const { /*...*/ }
^^^^^

此时,您可能想要返回 bool 而不是 BOOL:

bool operator== (const Class& other) const { /*...*/ }

关于c++ - std::array 无法比较以我的类作为其元素的两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444359/

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