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

このプログラムは、友人の名前と、彼らが最後に話した日を保持する構造体を配列に入れました。後で行うオプションの 1 つは、別の友達を追加することです。関数 GrowArray は、最初の配列を友人と日数で取得し、追加のスポットを含む別の配列を作成し、元の配列を新しい配列にコピーします。しかし、関数を使用すると、このエラーが発生します --> エラー: '(FriendInfo*)(& friends)' を 'FriendInfo*' から 'FriendInfo' に変換できませんでした。どうしたの?

4

1 に答える 1

1

friendsポインタではなく配列なので、そのように再割り当てすることはできません。GrowArrayできたとしても、関数が戻るときに破棄される新しい配列をスタック上に作成するだけなので、あなたがしていることは安全ではありません。

newandを使用deleteして配列を作成および破棄する必要があります (その後、それらをポインターとして渡すことができます) std::vector

于 2013-07-11T20:32:43.503 に答える