gpt4 book ai didi

c++ - 函数采用一个充满结构的数组,并返回一个具有相同结构的更大数组

转载 作者:行者123 更新时间:2023-11-28 07:31:31 26 4
gpt4 key购买 nike

#include <iostream>
#include <string>

using namespace std;

struct FriendInfo
{
string name;
int last_day;
};

FriendInfo GrowArray(FriendInfo friend_list,int sizing);

int main()
{
int initial_friends;
cout << "How many friends would you like to add--> ";
cin >> initial_friends;
FriendInfo friends[initial_friends];
for (int i = 0; i < initial_friends;i++)
{
cout << "What is your friend's name?--> ";
cin >> friends[i].name;
cout << "When was the last time you talked to " << friends[i].name << " ?--> ";
cin >> friends[i].last_day;
}
for (int i = 0; i < initial_friends;i++)
cout << friends[i].name << " " << friends[i].last_day << "\n";
cout << "What would you like to do now?\n1. Add another friend?\n2. Update one of yourfriends?\n3. Sort friends by day?4. Quit.\n--> ";
int option;
cin >> option;
while (option != 4)
{
if (option == 1)
{
friends = GrowArray(friends,initial_friends);
cout << "What is your new friend's name?--> ";
cin >> friends[initial_friends].name;
cout << "When was the last time you talked to " << friends[initial_friends].name << " ?--> ";
cin >> friends[initial_friends].last_day;
}

}
}

FriendInfo GrowArray(FriendInfo friend_list, int sizing)
{
FriendInfo new_list[sizing + 1];
for (int i = 0;i < sizing;i++)
{
new_list[i].name = friend_list[i].name;
new_list[i].last_day = friend_list.last_day;
}
return new_list;
}

这个程序将结构放入一个数组中,该数组包含 friend 的名字,以及他们与他们交谈的最后一天。稍后的选项之一是添加另一个 friend 。 GrowArray 函数采用带有 friend 和日期的初始数组,创建另一个带有额外点的数组,并将原始数组复制到新数组中。但是,当我使用该函数时,出现此错误 --> 错误:无法将“(FriendInfo*)(& friends)”从“FriendInfo*”转换为“FriendInfo”。怎么了?

最佳答案

你不能像那样重新分配 friends 因为它不是指针,它是一个数组。即使可以,您所做的也不安全,因为 GrowArray 只是在堆栈上创建一个新数组,该数组将在函数返回时被销毁。

您应该使用 newdelete 来创建和销毁数组(然后您可以将它们作为指针传递),或者最好使用 std::vector 为您处理所有这些事情。

关于c++ - 函数采用一个充满结构的数组,并返回一个具有相同结构的更大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602835/

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