c++ 'class'初始化没有相符的建构函式

yqhsw0fo  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(120)

我有一个名为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
}
wh6knrhe

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() , 所以 无法 对 它们 进行 推理 。

相关问题