Эта ошибка указателя. Ни один экземпляр конструктора не соответствует списку аргументов. - PullRequest
0 голосов
/ 23 октября 2018

Пожалуйста, помогите с ошибкой: ни один экземпляр конструктора не соответствует списку аргументов.А также, пожалуйста, помогите объяснить "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;
}

enter image description here

1 Ответ

0 голосов
/ 23 октября 2018

Пожалуйста, помогите с ошибкой: ни один экземпляр конструктора не соответствует списку аргументов.

Вместо этого:

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 - указатель на объект, вызывающийфункция.

...