一组 Class 个对象
Set of Class Objects
我定义了一组 class 对象,class 是人。以下是代码 -
#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 &'
我只是想遍历集合的所有元素(class 对象)并打印它们的值,但我不知道为什么会出现此错误。我在网上搜索过,但一无所获。我认为错误可能出在我正在编写的比较函数中,但我今天才学到这一切,现在我被卡住了。有人可以指导我吗?
写
set<Person> Set = { {18,"John"},{16,"Sean"} };
那就是你需要用大括号代替圆括号。
当有圆括号而不是大括号时,例如这个表达式
( 18,"John" )
是带逗号运算符的表达式。它的值是第二个操作数的值,即"John"
。所以编译器正在考虑像
这样的声明
set<Person> Set = { "John", "Sean" };
并且您需要包含 header <string>
.
我定义了一组 class 对象,class 是人。以下是代码 -
#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 &'
我只是想遍历集合的所有元素(class 对象)并打印它们的值,但我不知道为什么会出现此错误。我在网上搜索过,但一无所获。我认为错误可能出在我正在编写的比较函数中,但我今天才学到这一切,现在我被卡住了。有人可以指导我吗?
写
set<Person> Set = { {18,"John"},{16,"Sean"} };
那就是你需要用大括号代替圆括号。
当有圆括号而不是大括号时,例如这个表达式
( 18,"John" )
是带逗号运算符的表达式。它的值是第二个操作数的值,即"John"
。所以编译器正在考虑像
set<Person> Set = { "John", "Sean" };
并且您需要包含 header <string>
.