Probleme bei Projekt mit g++
-
Hallo,
bin mit meinem Latein am Ende und hoffe hier kann mir jemand helfen...
Ich versuche ein eigentlich recht einfaches Projekt umzusetzen und habe dazu eine Klasse mit .h und .cpp erstellt, dazu eine .cpp in der eine main() Methode implementiert ist. Mein Problem ist nun folgendes:
Ich rufe in der main() eine Methode getValue() der Klasse Glyph auf, die in der .h deklariert und in der .cpp definiert ist und bekomme folgenden Fehler:
undefined reference to `Glyph<int>::getValue()'sobald ich die Funktionsdefinition aus der glyph.cpp in die main.cpp oder in die glyph.cpp kopiere, funktioniert das ganze. Es scheint also offensichtlich an der Einbindung durch den Compiler zu liegen.
Also habe ich eine makefile geschrieben, die alle drei Dateien compilieren und zu einem gemeinsamen output verbinden sollte. Sollte. Der Fehler bleibt der gleiche.**
Code der glyph.cpp**# include "glyph.h" using namespace std; template <class T> T Glyph<T>::getValue() { return value; }Code der glyph.h
#ifndef GLYPH #define GLYPH using namespace std; template <class T> class Glyph{ private: T value; Glyph *next; public: Glyph(T pValue){value = pValue;}; ~Glyph(){}; void setNext(Glyph pNext){ next = pNext;}; Glyph getNext(){ return next; }; T getValue(); }; #endifCode der main.cpp
#include <iostream> #include "glyph.h" using namespace std; int main() { Glyph <int> *g; g = new Glyph <int> (5); cout << g->getValue(); return 0; }Auch Varianten wie g++ -Wall -c main.cpp glyph.cpp oder ähnliches funktionieren nicht.
Bin etwas ratlos, ob es an meinem Einsatz von Templates liegt (bin neu auf dem Gebiet) oder tatsächlich irgendwas mit meiner Methode die Dateien einzubinden zu tun hat.
Für Hilfe wäre ich dankbar!
MfG
Kuni
-
-
Siehe auch Thread "Die meistgestellten Fragen" (oben im Forum, als "wichtig" markiert), Nummer 5.
-
Okay, vielen Dank
schade, dachte es gibt vllt. ein angenehmeres Workaround...