Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Template

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.03.2006, 15:45 Uhr
~FrankDrebin
Gast


Hallo,

ich bin gerade dabei eine verkettete Liste zu schreiben und dachte mir, dafür eine Template-Klasse namens Element zu schreiben. Beim Instanzieren bekomme ich jedoch einen Fehler, der mir einfach nichts sagt:



Code:
// Test.cpp:
#include "Element.h"

int main()
{
    Element<int> *x = new Element<int>(10); // << dies verursacht die Fehlermeldung

    return 0;
}



// Element.h:
#ifndef _ELEMENT_INCLUDED_
#define _ELEMENT_INCLUDED_

template <class T>
class Element
{
private:
    T m_value;

public:
    Element(T value);
};

#endif // _ELEMENT_INCLUDED_



// Element.cpp:
template <class T>
class Element
{
private:
    T m_value;


public:
     Element(T value)
    {
        m_value = value;
    }
};



Die Fehlermeldung die mir dann das MS VS 7 auswirft ist:

Zitat:
Lexer error LNK2019: Nicht aufgelöstes externes Symbol '"public: __thiscall Element<int>::Element<int>(int)" (??0?$Element@H@@QAE@H@Z)', verwiesen in Funktion '_main'


Ohne diese Zeile läuft alles glatt durch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.03.2006, 15:53 Uhr
predator



Hi
einfach mal die Boardsuche bemühen! Die ersten zwei Treffer:
www.fun-soft.de/showtopic.php?threadid=14538
www.fun-soft.de/showtopic.php?threadid=14407
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.03.2006, 15:55 Uhr
Spacelord
Hoffnungsloser Fall


Hallo,
die Definition von Templates muss immer mit in den Header sonst gibt es Probleme.
Es gibt da zwar noch nen Schlüsselwort dass die Aufteilung in h und cpp Dateien unterstützen soll, das wird aber (glaube ich) von keinem Compiler unterstützt.


C++:
#ifndef _ELEMENT_INCLUDED_
#define _ELEMENT_INCLUDED_

template <class T>
class Element
{
private:
    T m_value;

public:
    Element(T value):m_value(value){};
};

#endif


So sollte es funktionieren.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: