İki kez bağlantılı liste veri yapısını uygulamaya çalışıyorum, bu özelliği kullanarak bir işlev uygulamasından bu özelliğe erişmeye çalıştığımda node
türünde özel bir özelliği olan bir sınıf oluşturdum. this
anahtar kelimesi uygulama başarısız. Ben Aşağıda başlık dosyasının uygulamasıdır LinkedList.hppC++: Başlık uygulama dosyasında sınıf özelliklerine erişme
#include <stdio.h>
template<class T>
class LinkedList{
private :
struct Node{
T value;
Node* next;
Node* prev;
}node;
public :
LinkedList();
LinkedList(T item);
void add(T item);
// void get();
// void insert();
// void remove();
};
için
Başlık dosyasını yardıma ihtiyacım var. Hata döndürdü
#include "LinkedList.hpp"
template<class T>
LinkedList<T>::LinkedList(){
}
template<class T>
LinkedList<T>::LinkedList(T item){
}
template <class T>
void LinkedList<T>::add(T item){
Node* node = new Node;
node->value = item;
node->prev = NULL;
//Where the error is being generated
node->next = this.node;
};
diyor ki: hata mesajı ile belirttiği gibi
/Users/mac/Documents/LinkedList/LinkedList/LinkedList.cpp:27:22: Member reference base type 'LinkedList<T> *' is not a structure or union
Çalışıyor: 'nod> sonraki = & this-> düğüm;' neden çalıştığını ben –
anlamıyorum nedir '& this-> node' eşdeğerdir & (bu-> node) 'ye. Bu bir işaretçidir. 'bu-> node' bir struct node'dur ve son olarak 'node 'bu' struct'un (veya buna işaret eden) bir adresidir, ihtiyacınız olan şey budur. –
Ayrıca, uygulamanız bozuk. Eğer add() 'i değiştirmedikçe,' get() 'işlevini uygulayamazsınız, çünkü listenin öğesi her zaman sonuncu olacaktır. Geleneksel olarak, liste sınıfı sadece struct Node'a bir işaretçi içermeli ve listede ilk olanı olmalıdır. Ayrıca, geleneksel olarak, 'add()', listenin sonuna bir öğe ekler. –