没有用于初始化"类"的匹配构造函数



我有一个名为Person的类,我想在main中使用show函数。但出于某种原因,它会给'Person'错误初始化的No匹配构造函数。我试着打印出人名和年龄我的排序运行正常,只是这个错误,我不知道如何修复它

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
}

你没有默认构造函数,所以你不能写Person person;你需要写Person person("Smith", 20);。但是,代码还有一些其他问题:

  • 不写this->memvar,可以在类内写memvar;在构造函数中,使用初始化列表(Person(string name, int age) : name(name), age(age) {})
  • 尽量避免using namespace std;,这是一个源的名称冲突,当你做真正的编程。
  • 不清楚person是什么意思
  • for-循环中,您分配了value,但您对show()进行了person调用。此外,您不采用引用元素(auto& value)
  • 我看不到shortName()mySort(),所以我不能对它们进行推理。

最新更新