Anzeige:
Ergebnis 1 bis 2 von 2

Thema: problem mit template-funktionen

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Beiträge
    55

    problem mit template-funktionen

    in liste.h steht folgendes (auszug):

    template<class T> class CListe
    {
    void Insert();
    };

    wenn ich die funktion Insert nicht in der header-datei implentiere, sondern ordentlich in der liste.cpp (bei der kompilierung der liste.cpp kommt es zu keinem fehler!), dann kommt es zu problemen, wenn ich in der main-funktion des programms folgendes ausführe:

    CListe<int> liste;
    liste.Insert();

    Fehler: main.cpp: undefined reference to `CListe<int>::Insert()'

    aber ich hab sie doch in der liste.cpp implentiert:
    template<class T> void CListe<T>::Insert() {}

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: problem mit template-funktionen

    Original geschrieben von Camel69
    wenn ich die funktion Insert nicht in der header-datei implentiere, sondern ordentlich in der liste.cpp (bei der kompilierung der liste.cpp kommt es zu keinem fehler!), dann kommt es zu problemen
    Bei Templates ist das ein Sonderfall.
    Nur wenige Compiler unterstützen das auslagern der Template Implementation, weil sie ansich erst am Ort der Benutzung eingesetzt wird.

    Ich glaube man muss dazu in der .cpp Datei das Schlüsselwort export benutzen (nicht zu verwechelsn mit extern)

    Aber wie gesagt können das nur sehr wenige Compiler, darum schreibt man bei Templates die Implementierung ebenfalls in den Header.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •