De bedoeling is om van mijn klasse linkedlist een template klasse te maken zodat ik meer dan alleen strings of ints in mijn linked list kan stoppen.
De linkedlist klasse heb ik zelf al geschreven maar het probleem doet zich voor als ik er een klasse template van wil maken.
Ik krijg een error zoals dit dan:
ISO C++ forbids declaration of `element' with no type
Dit is mijn originele klasse:
Dit is de aangepaste versie waarbij ik dus die error kreeg (er waren meer als één error):
Nu mijn vraag: weet iemand wat er hier mis is en hoe ik deze linked list kan maken zodat ik zowel met strings als met ints kan werken met behulp van een klasse template?
(voor de duidelijkheid: in mijn main programma kan ik dan zowel lijst.push("eenstring"); doen als lijst.push(123); doen.
Dank bij voorbaat
De linkedlist klasse heb ik zelf al geschreven maar het probleem doet zich voor als ik er een klasse template van wil maken.
Ik krijg een error zoals dit dan:
ISO C++ forbids declaration of `element' with no type
Dit is mijn originele klasse:
Code:
#include <sstream>
#include <iomanip>
using namespace std;
struct element {
string num;
element *volg;
};
class linkedlist {
private:
element *start;
public:
linkedlist(){
start = 0;
}
~linkedlist(){
element *p;
while(start!= 0){
p = start;
start = start->volg;
delete p;
}
}
void push(string x){
element *p = start;
start = new element;
start->volg = p;
start->num = x;
}
void toon(){
for (element* p = start; p!=0; p=p->volg){
cout << p->num <<" ";
}
cout << endl;
}
bool isLeeg(){
return (start == 0);
}
string pop(){
string temp = start->num;
element *p;
p = start;
start = start->volg;
delete p;
return temp;
}
};
Dit is de aangepaste versie waarbij ik dus die error kreeg (er waren meer als één error):
Code:
#include <iomanip>
using namespace std;
template <class S>
struct element {
S num;
element *volg;
};
template <class T>
class linkedlist {
private:
element *start;
public:
linkedlist(){
start = 0;
}
~linkedlist(){
element *p;
while(start!= 0){
p = start;
start = start->volg;
delete p;
}
}
void push(T x){
element *p = start;
start = new element;
start->volg = p;
start->num = x;
}
void toon(){
for (element* p = start; p!=0; p=p->volg){
cout << p->num <<" ";
}
cout << endl;
}
bool isLeeg(){
return (start == 0);
}
string pop(){
string temp = start->num;
element *p;
p = start;
start = start->volg;
delete p;
return temp;
}
};
Nu mijn vraag: weet iemand wat er hier mis is en hoe ik deze linked list kan maken zodat ik zowel met strings als met ints kan werken met behulp van een klasse template?
(voor de duidelijkheid: in mijn main programma kan ik dan zowel lijst.push("eenstring"); doen als lijst.push(123); doen.
Dank bij voorbaat