我有一个名为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()
,所以我不能对它们进行推理。