0

请帮助错误:没有构造函数实例与参数列表匹配。还请帮助解释“strcpy(this->name, name);”

class Student {
    char name[50];
    char surname[50];
    int age;
public:
    Student(char name[], char surname[], int age) {
        strcpy(this->name, name); // please explain this line what does it means?
        strcpy(this->surname, surname);
        this->age = age;
    }
    void Show() {
        cout << "Name: " << this->name << endl;
        cout << "Surname: " << this->surname << endl;
        cout << "Age: " << this->age;
    }
};

int main() {
    Student A("Ivan", "Sidoroff", 25);
    A.Show();

    system("pause");
    return 0;
}

在此处输入图像描述

4

1 回答 1

2

请帮助错误:没有构造函数实例与参数列表匹配。

而不是这个:

Student(char name[], char surname[], int age) {

尝试这个:

Student(const char *name, const char *surname, int age) {

它抱怨是因为指针与指向的char指针不匹配const char

strcpy(this->name, name);// 请解释一下这行是什么意思?

它将字符串从name(传递的参数)复制到另一个name(即 的一部分class Student)。由于两者都被称为name它是模棱两可的。在这种情况下,name指的是参数,并且this->name用于指代中的字段class Student

更一般地说,this是指向调用函数的对象的指针。

于 2018-10-23T14:33:28.853 回答