Я новичок в C ++. и я писал link list
, в котором я могу вызвать мою функцию для вставки узлов следующим образом:
(при условии, что a
и b
и c
- это данные, которые я хочу вставить в link list
.
list.insert(a)->insert(b)->insert(c);
и я сделал это так:
#include <iostream>
using namespace std;
class Node {
public:
char letter;
Node* next;
};
class link_list {
private:
Node* head;
public:
link_list() {
head = NULL;
}
link_list* insertNewNode(char item);
};
link_list* link_list::insertNewNode(char item) {
Node* temp;
temp = new Node;
temp->letter = item;
temp->next = head;
head = temp;
return this;
}
int main() {
link_list list;
list.insertNewNode('a')->insertNewNode('b')->insertNewNode('c');
return 0;
}
в моей функции insertNewNode
я возвращаю указатель на мой текущий объект. И он работает нормально, однако Я не уверен, что мой метод верен?
Но я должен также объяснить, что произойдет, если вместо возврата указателя или ссылки на мой текущий объект я верну свой текущий объект.
поэтому я попробовал это:
class Node {
public:
char letter;
Node* next;
};
class link_list {
private:
Node* head;
public:
link_list() {
head = NULL;
}
link_list insertNewNode(char item);
};
link_list link_list::insertNewNode(char item) {
Node* temp;
temp = new Node;
temp->letter = item;
temp->next = head;
head = temp;
return *this;
}
int main() {
link_list list;
list.insertNewNode('a')->insertNewNode('b')->insertNewNode('c');
return 0;
}
, а затем я получил ошибку, в которой говорилось, что list
должен быть указателем, поэтому я изменил свой основной на:
int main() {
link_list *list;
list = new link_list;
list->insertNewNode('a')->insertNewNode('b')->insertNewNode('c');
return 0;
}
, но я все еще получая эту ошибку, которая сказала здесь list->insertNewNode('a')->insertNewNode('b')->insertNewNode('c');
выражение должно иметь тип указателя , и эти две ошибки:
1.type 'link_list' не перегружен член 'operator ->'
2 .'-> link_list :: insertNewNode ': левый операнд имеет тип' class ', используйте '.'
так вот мои вопросы с целью вызова функции вставки, подобной этой list.insert(p1)->insert(p2)->insert(p3);
, мой путь в первой программе правильный? а также возможно ли вернуть мой текущий объект для этой цели? и что будет, если я верну текущий объект?
PS: извините за длинный вопрос, а также спасибо заранее за вашу помощь.