类对象集



我定义了一组类对象,类是Person。以下是代码-

#include<iostream>
#include<set>
#include<functional>
using namespace std;
class Person {
public:
int age;
string name;
bool operator < (const Person& rhs) const { return age < rhs.age; }
};
int main()
{
set<Person> Set = { (18,"John"),(16,"Sean") };
for (const auto& e: Set)
{
cout << e.age << " " << e.name;;
}
return 0;
}

当我构建代码-时,我得到了以下错误

Error   C2664   'Person::Person(Person &&)': cannot convert argument 1 from '_Ty' to 'const Person &'

我只是试图迭代集合的所有元素(类对象(并打印它们的值,但我不知道为什么会出现这个错误。我在网上搜索了一下,一无所获。我想错误可能是在我写的比较函数中,但我今天刚刚学会了这一切,现在我被卡住了。有人能带我过去吗?

写入

set<Person> Set = { {18,"John"},{16,"Sean"} };

也就是说,你需要使用大括号而不是括号。

当有括号而不是大括号时,例如这个表达式

( 18,"John" )

是一个带有逗号运算符的表达式。它的值是第二个操作数"John"的值。所以编译器正在考虑像一样的声明

set<Person> Set = { "John", "Sean" };

并且您需要包括标题<string>

最新更新