gpt4 book ai didi

c++ - 错误不匹配 'operator='(操作数类型为 'Person' 和 'Person*')

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:24 27 4
gpt4 key购买 nike

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;
}

最佳答案

当你调用这条线时:

Person* persons = new Person[4];

那么这已经是四个人了。您不需要以下行:

persons[i] = new Person();

只需删除这一行。它返回一个不能分配给 persons[i]Person*,它指的是一个实际的 Person(而不是指针) .但是,由于您已经在第一行创建了四个 Persons,因此您根本不需要这一行。

但是,您应该在完成后删除这些人:

delete[] persons;

关于c++ - 错误不匹配 'operator='(操作数类型为 'Person' 和 'Person*'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55340923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com