Witam!
Chciałbym stworzyć na szablonach liste jednokierunkowa obiektów - dla uproszenia liste liczb INT (nie moge korzystać z gotowej list std::list). Mam jednak pewien problem przy dodawaniu nowych elementow do listy. Wydaje mi sie, ze dodawanie napisane jest poprawnie jednak dziala tylko dodawanie glowy do pustej list, kolejne elementy nie dodaja sie - program wykonuje sie poprawnie. Dla uproszczenia wszystkie atrybuty są publiczne.
PLIK "template.h"
#pragma once
#include <iostream>
template<class T>
class Lista{
public:
Lista(void);
~Lista(void);
class Element{
public:
Element(T v){
value = v;
next = NULL;
}
T value;
Element* next;
};
Element* head;
Element* current;
void show(void);
void newElem(T);
void add(Element*);
};
PLIK "template.cpp"
template<class T>
Lista<T>::Lista(void){
head = NULL;
}
template<class T>
Lista<T>::~Lista(void){
// usuwanie elementow.
}
template<class T>
typename void Lista<T>::show(void){
Element* tmp = head;
while(tmp != NULL){
std::cout << tmp->value << std::endl;
tmp = tmp->next;
}
}
template<class T>
void Lista<T>::newElem(T value){
add(new Element(value));
}
template<class T>
void Lista<T>::add(Element* element){
if (head == NULL){
head = element;
}
else{
current = head->next;
while (current != NULL)
current = current->next;
current = element;
}
}
PLIK main.cpp
int main(){
Lista<int> lista;
lista.newElem(10);
lista.newElem(100);
lista.show();
return 0;
}