我有一个名为Person的类,我想在main中使用show函数。但是由于某种原因,它给出了一个没有匹配的构造函数来初始化'Person'错误。我试图打印出人名和年龄,我的排序运行正常,就是这个错误,我不知道如何修复它
class Person {
public:
string name;
int age;
public:
Person(string name, int age) {
this->name = move(name);
this->age = age;
}
void show() {
cout << name << ": " << age << endl;
}
.
.
.
int main() {
vector<Person> list = {
Person("Smith", 20),
Person("Andrew", 31),
Person("Beck", 19)
};
Person person; // Error
mySort(&people, Person::sortName());
for (auto value: list) {
person.show(); // I'm trying to use show function
}
1条答案
按热度按时间wh6knrhe1#
您 没有 默认 构造 函数 , 因此 无法 编写
Person person
;您 需要 编写 类似 于Person person("Smith", 20);
的 代码 。 但是 , 该 代码 还 存在 一些 其他 问题 :this->memvar
, 你 可以 在 类 里面 写memvar
;在 构造 函数 中 , 使用 初始 化 列表 (Person(string name, int age) : name(name), age(age) {}
)using namespace std;
, 在 实际 编程 时 , 它 是 名称 冲突 的 来源 。person
的 含义for
- 循环 中 , 你 给value
赋值 , 但是 你 在 person 上 调用show()
。 而且 , 你 没有 通过 引用 来 获取 元素 (auto& value
)shortName()
和mySort()
, 所以 无法 对 它们 进行 推理 。