1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Probleme beim Linken

  • Leocor
  • 27. Mai 2008 um 12:26
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Leocor
    Punkte
    165
    Beiträge
    23
    • 27. Mai 2008 um 12:26
    • #1

    Ich weis das ist wahrscheinlich der ur leichte fehler! aber ich finde ihn trotzdem nicht!!

    Also: ich hab ein Template FGraph und möchte diese Template-Class einmal verwenden:
    main.cpp:

    C
    #include <iostream>
    
    
    #include "FGraph.h"
    #include "Human.h"
    
    
    using namespace std;
    
    
    int main(int argc, char *argv[]){
    	Human mike("Mike","-");
    
    	FGraph<Human> sBaum;
    	sBaum.Root = mike;
    
    	cout << sBaum.toString();
    }
    Alles anzeigen

    FGraph.h:

    Code
    template<class T> class FGraph{
    ...
    	FGraph();
    	FGraph(T root);
    	virtual ~FGraph();
    ...
    }

    FGraph.cpp:

    Code
    template<class T> FGraph<T>::FGraph(){
    	Root = T();
    
    	addDirectDescendant( T() , T());	
    }
    
    
    template<class T> FGraph<T>::FGraph(T root){
    	Root = root;
    	addDirectDescendant( Root , T());
    }
    
    
    template<class T> FGraph<T>::~FGraph(){
    	for(int i = 0; i < m_descendant.size(); i++){
    		delete 	m_descendant.at(i);
    	}
    }
    Alles anzeigen

    Und mein Compiler spuckt nur aus:

    Code
    #> make
    g++ -ansi -pedantic-errors -g -Wall -c main.cpp
    g++ -ansi -pedantic-errors -g -Wall -c FGraph.cpp
    g++ -o myFGraph -g main.o FGraph.o Human.o
    main.o: In function `main':
    /home/strenkwalder/.eclipse/FGraph/main.cpp:12: undefined reference to `FGraph<Human>::FGraph()'
    /home/strenkwalder/.eclipse/FGraph/main.cpp:15: undefined reference to `FGraph<Human>::toString()'
    /home/strenkwalder/.eclipse/FGraph/main.cpp:15: undefined reference to `FGraph<Human>::~FGraph()'
    /home/strenkwalder/.eclipse/FGraph/main.cpp:15: undefined reference to `FGraph<Human>::~FGraph()'
    collect2: ld returned 1 exit status
    make: *** [FGraph] Fehler 1
    Alles anzeigen

    und jetzt meine frage: Wo ist das problem ich habs mit include richtig eingebunden und sonst mault der compiler auch nicht!!:confused:
    es hat sicher was mit dem template aufruf zu tun!!! weil wenn ich die zu einem nicht template class mach dann gehts ohne fehler

    2 Mal editiert, zuletzt von Leocor (27. Mai 2008 um 13:02)

  • Ringding
    Punkte
    1.237
    Beiträge
    244
    • 27. Mai 2008 um 13:01
    • #2

    Du musst alle template-Methoden ins Headerfile reinschreiben.

    Also alles aus FGraph.cpp -> FGraph.h. Das FGraph.cpp ist dann leer, und du brauchst es nicht mehr ;)

  • Leocor
    Punkte
    165
    Beiträge
    23
    • 27. Mai 2008 um 13:05
    • #3

    ohhh mann ich hass manchmal den compiler :D

    1000x Dank ... auf die idee wär ich nie gekommen :D

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum