C++ 没有与参数列表匹配的构造函数 实例 参数类型为: (const char [3], int, const char [5])


#include<iostream>
#include<string>
using namespace std;
class Person
{
protected:
    string m_name;
    int m_age;
public:
    Person(const string& name, int age)
    {
        m_name = name;
        m_age = age;
    }
    Person() {};
    ~Person() {};
    void display()
    {
        cout << "人员姓名:" << m_name << "," <<"年龄:" << m_age << endl;
    }
};
class Student:public Person
{
private:
    string m_id;
public:
    Student(string id, string name, int age)
    {
         m_age = age;
        m_name = name;
        m_id = id;
    }
    void display()
    {
        cout << "学生姓名:" << m_name << "," << "年龄:" << m_age << "," << "学号:" << m_id << endl;
    }
};
int main() {
    Person p("张三", 20);
    p.display();
    Student s("李", 18, "0001");
    s.display();
    p = (Person)s;
    p.display();
    Person* ps = new Student("王五", 20, "0002");
    ps->display();
    delete ps;
    return 0;
}
为什么在“李四”和王五处会出现这样的问题

这里是你的定义构造函数
Student(string id, string name, int age)
这是你调用的方式,
Student s("李", 18, "0001");
这些能对应上吗?