PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Templates - Was ist falsch?


BofD
2006-02-20, 16:43:28
Quelltext:
//liste.h
template <class T>
class tListItem
{
public:
tListItem* next, * prev;
T Daten;
};

template <class T>
class tList
{
public:
tListItem<T>* first, * current;
tList(void);
void ResetList(void);
};

//liste.cpp
#include "liste.h"

template <class T>
tList<T>::tList(void)
{
current = first = NULL;
}

template <class T>
void tList<T>::ResetList(void)
{
current = first;
}

//app.cpp
#include "liste.h"

using namespace std;

int main(int)
{
tList<int> Liste(void);
Liste.ResetList(); // <-- Das ist Line 13
return 0;
}



Wenn ich nun versuche das Ganze zu kompilieren, dann bekomme ich folgenden Fehler:

# g++ app.cpp -o app
app.cpp: In function `int main(int)':
app.cpp:13: error: request for member `ResetList' in `Liste', which is of
non-aggregate type `tList<int> ()()'

Trap
2006-02-20, 16:53:29
Bei templates muss man alles im header definieren. Theoretisch ginge es auch mit "export", das unterstützt aber kaum ein Compiler.

Siehe http://www.comeaucomputing.com/4.0/docs/userman/export.html

Coda
2006-02-20, 16:58:46
Bei templates muss man alles im header definieren. Theoretisch ginge es auch mit "export", das unterstützt aber kaum ein Compiler.Bringt auch nichts, weil man den Quelltext trotzdem mitliefern müsste. Export ist ein Fehldesign und wird wohl in der nächsten C++-Version rausfliegen.