Gast
2007-04-11, 19:19:45
Folgendes Problem habe ich mit einer (statischen) Template Klassenmethode:
Header Datei:
class Editor
{
public:
template<class c> static void openInEditor();
[..]
};
dazugehörige cpp Datei:
template<class c> void Editor::openInEditor()
{
Editor* ed = new c();
[...]
}
eine weitere cpp Datei, welche den oben genannten Header einbindet, ruft folgendes auf:
Editor::openInEditor<IslandEditor>();
Kompilieren klappt, aber dann kommt ein Linkerfehler:
MainEditorWindow.cpp:(.text+0x136): undefined reference to `void Editor::openInEditor<IslandEditor>()'
collect2: ld gab 1 als Ende-Status zurück
Compiler ist gcc 4.1.
Header Datei:
class Editor
{
public:
template<class c> static void openInEditor();
[..]
};
dazugehörige cpp Datei:
template<class c> void Editor::openInEditor()
{
Editor* ed = new c();
[...]
}
eine weitere cpp Datei, welche den oben genannten Header einbindet, ruft folgendes auf:
Editor::openInEditor<IslandEditor>();
Kompilieren klappt, aber dann kommt ein Linkerfehler:
MainEditorWindow.cpp:(.text+0x136): undefined reference to `void Editor::openInEditor<IslandEditor>()'
collect2: ld gab 1 als Ende-Status zurück
Compiler ist gcc 4.1.