003
06.07.2006, 17:54 Uhr
TypusM
|
Es erscheibt mir alles immer merkwürdiger. Eine Funktion kann in der impl.cpp stehen, ohne dass der einen Fehler ausgibt, bei der anderen macht er den Fehler.
main.cpp:
C++: |
#include <iostream.h> #include <conio.h>
#include "dekl.h"
template<class T> void tfind(T* feld, T wert, int &ind) { ind = -1; for (int i=0;i<MAX;i++) { if (feld[i]==wert) { ind = i; return; } } }
void main() { int v1[MAX]={3,2,0,2,-10}; char* v2[MAX]={"abc1","ab2","abcd3","abx4","yxc5"}; int ind;
//Ausgabe cout << "Ausgabe alles:" << endl << endl;
for (int y=0;y<MAX;y++) { cout << v1[y] << endl; } cout << endl; for (int y=0;y<MAX;y++) { cout << v2[y] << endl; }
cout << endl;
//SUCHE IN INT-FELD tfind(v1,2,ind); cout << "2 gefunden bei Index: " << ind << endl;
//SUCHE IN STRING-FELD tfind<char>(v2,"abx4",ind); cout << "'abc4' gefunden bei Index: " << ind << endl;
getch(); }
|
impl.cpp
C++: |
#include <iostream.h> #include <conio.h>
#include "dekl.h"
template<> void tfind<char>(char** feld, char* wert, int &ind) { ind = -1; for (int i=0;i<MAX;i++) { if (strcmp(feld[i],wert)==0) { ind = i; return; } } getch(); }
|
dekl.h
C++: |
const int MAX=5;
template<class T> void tfind(T* feld, T wert, int &ind);
template<> void tfind<char>(char** feld, char* wert, int &ind)
|
Schiebe ich jetzt die Funktion "template<class T>void tfind(T* feld, T wert, int &ind)" in die impl.cpp spuckt er den Fehler. Ich habe keinerlei Erklärung dafür. Jetzt seid ihr dran
MfG |