C++ 预期均衡器错误

C++ 预期均衡器错误,c++,googletest,C++,Googletest,我正在使用google测试函数EXPECT_EQ为函数运行测试用例。函数“find”返回一个列表,并接收要查找的名称字符串。下面是我的测试函数: TEST_F(test_neighborhood, find) { list<Man> test; test.push_back(Man("username", "John", "Smith", 1, 1, "")); EXPECT_EQ(neighborhood.find("John"), test); } TE

我正在使用google测试函数EXPECT_EQ为函数运行测试用例。函数“find”返回一个列表,并接收要查找的名称字符串。下面是我的测试函数:

TEST_F(test_neighborhood, find) {
    list<Man> test;
    test.push_back(Man("username", "John", "Smith", 1, 1, ""));
    EXPECT_EQ(neighborhood.find("John"), test);
}
TEST\u F(TEST\u邻域,find){
列表测试;
测试。推回(男人(“用户名”,“约翰”,“史密斯”,1,1,”);
EXPECT_EQ(邻居发现(“约翰”),测试);
}
但当我试图“制造”时,它给了我一个很长的错误 /Library/Developer/CommandLineTools/usr/bin/./include/c++/v1/算法:665:71:错误:无效 二进制表达式的操作数('const-Man'和'const-Man') bool运算符()(常数T1和x,常数T1和y)常数{return\uuuux==\uuuuy;}


我没有正确使用EXPECT\u EQ吗?如何修复此错误?

EXPECT\u EQ
要求为传递的项定义相等运算符
std::list
已经有这样一个操作符为每个存储项调用相等操作符。因此,您似乎需要定义
操作符==
来比较
Man
类的两个实例是否相等:

bool operator ==(Man const & left, Man const & right)

嗨,我是否将该行放在测试函数中?它仍然抛出相同的错误我相信你必须在
Man
classNo中定义它,你需要将它与
Man
类定义一起放置,请参见。我想我仍然不知道该将它放置在何处(我将它放置在类定义中的Man头类文件中,并尝试了public和private)但是除了原来的:./inc/man.h:21:10:错误:重载的'operator='必须是一个二进制运算符(有3个参数)bool operator==(man const&left,man const&right)@user90823745它应该是同一命名空间中的自由函数。通常,它要么在同一头中的类外声明,要么在类内声明为
友元