| 

.NET C# Java Javascript Exception

1
hallo, ich hab gerade ein problem mit templates und klassen in c++.
btw. ich benutze den borland c builder 6...

mein problem is, ich will eine template klasse erzeugen und die aufteilung soll wie unten gezeigt sein, sprich
main.cpp -> main
File1.h -> Klassendeklaration
File1.cpp -> Implementierung der Funktionen der Klasse

wenn ich den Inhalt der File1.cpp mit in den Header tue, funzt es.
aber mit der aufteilung nicht!?




------------------------------------------------------------------------------------main.cpp
#pragma hdrstop
#pragma argsused
#include <conio>
#include "File1.h"



int main(int argc, char* argv[])
{

myClass<int>int_var;
myClass<char*>char_var;


getch();
return 0;
}



------------------------------------------------------------------------------------File1.h
#ifndef FILE1_H
#define FILE1_H

#include <iostream>
#include "File1.cpp"
using namespace std;


template<class T>
class myClass
{
public:
void test(T);

};
#endif


------------------------------------------------------------------------------------(File1.cpp)
template<class T>
void myClass<T>::test(T var)
{
cout << var;

}


Ich bekomm 3 Fehler, alle für die File1.cpp angezeigt:
-Größe von myClass unbekannt oder Null
-Templates müssen Klassen oder Funktionen sein
-Fehler in Deklarationssyntax

ich weiß das dass problem nich kompliziert ist, aber ich komm einfach nicht drauf...

schonmal danke
27.01.2011
sky-net 161 6
2 Antworten
2
Templates sind in C++ völlig vermurkst. Du musst die Implementation der test Methode in der Header-Datei haben. Der C++-Compiler übersetzt die cpp Dateien völlig separat und benötigt Daher den Rumpf der Template-Methoden. Warum das bei normalen Methoden geht, ist eine laaange Geschichte.
27.01.2011
ashanti 56 1 4
2
Also mir fallen folgende "Fehler" auf:
- File1.cpp hat kein Include zur File1.h
- File1.h hat einen Include zur File1.cpp

Wenn ich das "korrekt" bei mir in VC++ nachbilde, funktioniert das Beispiel von dir.
27.01.2011
Konstantin 3,7k 8

Stelle deine Cplusplus-Frage jetzt!