template <typename T>
class Node {
private:
T data;
Node<T> * next;
public:
Node(T _data, Node<T> * _next): data(_data), next(_next){}
T get_data() const {
return this->data;
}
Node<T> * get_next() const {
return this->next;
}
void set_data(T data) {
this->data = data;
}
void set_next(Node<T> * next) {
this->next = next;
}
};
jetzt versuche ich, die ‚set_next()‘ Funktion auf dem dereferenzierte Objektzeiger aufzurufen:C++ - Aufruf Memberfunktion auf dereferenzierte Objektzeiger
Node<T> new_element(element, NULL);
Node<T> * tmp = this->get_last(); // returns a pointer to the last element
*tmp.set_next(&new_element);
, wenn ich versuche, die Konsole druckt diese errer zu kompilieren Nachricht:
Ich verstehe nicht, warum der Compiler möchte, dass ich '->' weil '.' ist eine vollkommen gute Möglichkeit, eine öffentliche Mitgliederfunktion aufzurufen, richtig?
Allerdings, wenn ich gesagt:
Node<T> new_element(element, NULL);
Node<T> * tmp = this->get_last();
*tmp->set_next(&new_element);
ich diese:
error: void value not ignored as it ought to be
*tmp->set_next(&new_element);
Ich verstehe nicht, was das bedeutet, kann mir jemand helfen?
Dank für die Antwort danken! – cmplx96
Wenn Sie eine Funktion für einen Zeiger auf ein Objekt aufrufen, verwenden Sie -> und der Zeiger wird automatisch dereferenziert? – cmplx96
Die '->' dereferenziert den Zeiger und greift auf das Mitglied zu, '()' ruft die Methode auf. – mch