Ошибка не соответствует «operator =» (типы операндов: «Персона» и «Персона *») - PullRequest
2 голосов
/ 25 марта 2019
In function 'int main()':
41  14      [Error] no match for 'operator=' (operand types are 'Person' and 'Person*')
41  14      [Note] candidate is:
8   8       [Note] Person& Person::operator=(const Person&)
8   8       [Note] no known conversion for argument 1 from 'Person*' to 'const Person&'
28          recipe for target 'main112.o' failed

Домашнее задание:

Напишите программу для обработки информации о пассажирах. Информация включает в себя: 1) ФИО пассажира. 2) Номер рейса. 3) вес багажа Программа должна позволять пользователю: 1) Считайте данные с клавиатуры и отобразите их. 2) Рассчитать количество пассажиров с весом багажа более 10 кг

#include <string>
#include <iostream>
#include <windows.h>
#include <stdlib.h>

using namespace std;

struct Person
{
    string name;
    string race;
    int weight;

    void write();
    void show();
    void check();
};

void Person::show()
{
    cout<<"ÔÈÎ: "<<name<<endl;
    cout<<"Íîìåð ðåéñà: "<<race<<endl;
    cout<<"Âåñ áàãàæà: "<<weight<<endl;
}

void Person::write()
{
    cout<<"Ââåäèòå ÔÈÎ: ";
    getline(cin,name);
    cout<<"Ââåäèòå íîìåð ðåéñà: ";
    getline(cin,race);
    cout<<"Ââåäèòå âåñ áàãàæà: ";
    cin>>weight;
}

int main()
{
    Person* persons=new Person[4];
    for (int i = 0; i < 4; i++)
    {
        persons[i] = new Person();
        persons[i].write();
    }
    for (int i = 0; i < 4; i++)
    {
        persons[i].show();
    }
    cout<<"Ñ áàãàæîì áîëüøå 10 êã: ";//<<counter<<" ÷åëîâåê"<<endl;

    return 0;
}

1 Ответ

1 голос
/ 25 марта 2019

Когда вы звоните по этой линии:

Person* persons = new Person[4];

Тогда это уже четыре человека. Вам не нужна следующая строка:

persons[i] = new Person();

Просто удали эту строку. Он возвращает Person*, который нельзя присвоить persons[i], что относится к фактическому Person (а не к указателю). Но так как вы уже сделали четыре человека в первой строке, вам не нужна эта строка вообще.

Однако вы должны удалить людей, когда закончите:

delete[] persons;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...