Как вернуть функцию указателя? - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в c ++, меня попросили на уроке сделать функцию, которая берет двусвязный список и копирует его элементы в односвязный список, а затем возвращает его, однако мне дали только объявление этой функции, когда я сделал функцию, она либо ничего не возвращает, либо выдает ошибку ниже, я понимаю код связанного списка, но я не понимаю, используя указатель и возвращаемую часть, кто-то может мне это объяснить? и как заставить это работать? Я не могу найти объяснение этому в Интернете, или, возможно, я ищу неправильные ключевые слова. Любая помощь приветствуется.

template <class T>
SinglyLinkedList<T>* DoublyLinkedList<T>:: Function() {

SinglyLinkedList<T> list1;

DLLnode<T>*p = head;

while (p!=NULL) {

list1.addtoHead(p->value);
p=p->next;

}

return list1;

}

//error: cannot convert ‘SLL<int>’ to ‘SLL<int>*’ in return

1 Ответ

1 голос
/ 06 апреля 2020

1) Использование указателя для этого глупо. Но это то, что вам было сказано.

2) Если вы используете указатель, то эта функция вернет адрес. Вот что такое указатели. Вы не можете это изменить. Хитрость заключается в разыменовании указателя при попытке печати. Таким образом, он не будет печатать адрес, а вместо этого будет печатать то, на что указывает указатель. Если вам нужна помощь в этом, отправьте свой печатный код.

3) Вот как вы делаете это с помощью указателей

template <class T>
SinglyLinkedList<T>* DoublyLinkedList<T>:: Function() {
    SinglyLinkedList<T>* list1 = new SinglyLinkedList<T>();
    DLLnode<T>*p = head;
    while (p!=NULL) {
        list1->addtoHead(p->value);
        p=p->next;
    }
    return list1;
}

Это второй случай за последние дни, когда постерам было сказано делать что-то глупое своими профессорами университета. Ну хорошо.

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