Ошибка не может преобразовать 'std :: string * {aka std :: basic_string <char>*}' в 'node *' в назначении - PullRequest
0 голосов
/ 16 апреля 2020

Итак, у меня уже есть связанный список из 3 книг. Теперь я хочу добавить пожертвованные книги в предыдущий связанный список. (donation - это массив строк (названий книг), а amount - количество подаренных книг). Вот мой код:

void newbrowse(int amount, string donation[])
{
    head= new node;
    second=new node;
    tail= new node;

    head->bookname = "Book1";
    head->next = second;

    second->bookname = "Book2";
    second->next = tail;

    tail->bookname = "Book3";
    for (int i=0; i<amount; i+=1)
    {
        tail->next = &donation[i];
        tail = donation[i];
    }

    display = head;
    cout<<"Total books:"<<endl;
    for (int j=1; j<=(amount+3); j+=1)
    {
        cout<<display->bookname<<endl;
        display = display->next;
    }
}

Я получил эту ошибку в этой строке tail->next = &donation[i];. Насколько я понимаю, эта строка означала, что tail->next теперь указывает на адрес donation[i], поэтому я не знаю, почему я получаю ошибку? tail->next - это указатель, поэтому я положил амперсанд на пожертвование.

Что это за ошибка и как ее исправить?

1 Ответ

0 голосов
/ 16 апреля 2020

Согласитесь с комментариями выше, узлы не являются строками, и вы не можете назначить один другому, даже если задействованы указатели. Я предполагаю, что вы имели в виду что-то вроде этого

for (int i=0; i<amount; i+=1)
{
    node* n = new node;
    n->bookname = donation[i];
    tail->next = n;
    tail = n;
}

Вы сделали это (более или менее) правильно в первой половине своей функции. Вы должны сделать то же самое здесь.

...