Strings with Templates not working?
Hello,
I'm using a template to simulate a LinkedList from Java.It works without
problems, but when I want to use strings in main.cpp instead of char*, I
get the following error message:
$ ./Main
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
I tried to import <string> both in main.cpp and listT.h, but the
errormsg was the same.
The classes look like this:
MAIN.CPP------------------------------------------
#include "ListT.h"
#include <iostream>
using namespace std;
int main(void) {
ListT<string> *testList = new ListT<string>();
testList->add("Test1");
testList->add("Test2");
testList->add("Test3");
cout << testList->get(0) <<endl;
cout << testList->get(1) <<endl;
cout << testList->get(2) <<endl;
delete testList;
return 0;
}
------------------------------------------------
LISTT.H-----------------------------------------
template <class T> class ListT {
private:
struct TKnoten {
T daten;
int index;
TKnoten *next;
};
int counter;
TKnoten *kopf;
public:
ListT();
virtual ~ListT();
void add(T element);
//void remove(T element);
T get(int i);
};
template <class T>
ListT<T>::ListT() {
counter = 0;
kopf = new TKnoten();
kopf->next = 0;
}
template <class T>
ListT<T>::~ListT() {
while (kopf->next != 0) {
TKnoten *previous = new TKnoten();
previous = kopf;
kopf = kopf->next;
delete previous;
}
delete kopf;
}
template <class T>
void ListT<T>::add(T element) {
TKnoten *newKnoten = new TKnoten();
newKnoten->next = kopf;
kopf = newKnoten;
kopf->daten = element;
kopf->index = counter;
counter++;
}
template <class T>
T ListT<T>::get(int i) {
TKnoten *iterator = new TKnoten();
T daten = 0;
iterator = kopf;
while (iterator->next != 0) {
if (iterator->index == i) {
daten = iterator->daten;
}
iterator = iterator->next;
}
delete iterator;
return daten;
}
What's wrong with string as type? I'm using Linux with gcc (g++),
Thanks for your answers,
Markus