Newbie: Linker fejl. Hvad kan jeg gøre?
Hej!Jeg sidder og laver en opgave i C++, men har nu været gået i stå nogle (mange) timer, da jeg ikke kan slippe af med Linker fejl.
Noget af koden ser måske lidt \"klumpet ud\", men det er noget jeg selv vil tage mig af. Jeg er altså bare ude efter at prøve at få fjernet linker-fejlene, så jeg kan arbejde videre.
Eventuelt ville et forslag til løsningen være godt nok.
Koden ser følgende ud: (Der er en klasse mere, men ud fra Fejl-meddelelserne har den vist intet med det at gøre)
--------------------------
Jeg får følgen Linker Fejl:
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::~ArrayKlasse<Deltager>()\' referenced from H:\\VIRKER\\MAIN.OBJ
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::ArrayKlasse<Deltager>(int)\' referenced from H:\\VIRKER\\MAIN.OBJ
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::Add(Deltager)\' referenced from H:\\VIRKER\\MAIN.OBJ
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::First()\' referenced from H:\\VIRKER\\MAIN.OBJ
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::GetData()\' referenced from H:\\VIRKER\\MAIN.OBJ
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::Next()\' referenced from H:\\VIRKER\\MAIN.OBJ
[Linker Error] Unresolved external \'ArrayKlasse<Deltager>::Length()\' referenced from H:\\VIRKER\\MAIN.OBJ
--------------------------
Main.cpp
#include <vcl.h>
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <cstring>
#pragma hdrstop
using namespace std;
#include \"clDeltager.h\"
#include \"clArrayKlasse.h\"
#pragma argsused
int main(int argc, char* argv[])
{
ArrayKlasse<Deltager> Tabel;
Deltager D1(\"Ole Olesen\", \"22344\");
Deltager D2(\"Kim Jensen\",\"10\");
cout << D1;
Tabel.Add(D1);
for (int i=0;i<6;i++)
Tabel.Add(D2);
Tabel.First();
for (int i=0;i<Tabel.Length();Tabel.Next(),i++)
cout << Tabel.GetData() << endl;
getch();
return 0;
}
-----------------------------------------
clArrayKlasse.h
#ifndef clArrayKlasseH
#define clArrayKlasseH
template<class t>
class ArrayKlasse
{
public:
// Konstruktør
ArrayKlasse(int Maximum=5);
ArrayKlasse(const ArrayKlasse & Array);
~ArrayKlasse();
//Overloader
ArrayKlasse operator= (const ArrayKlasse & Array);
//ostream operator<< (ostream& out, );
// Access metoder
void Add(t Ny);
void First();
void Next();
bool More();
int Length();
t GetData();
private:
t * Data;
int Max;
int Used;
int PresentPosition;
void Grow();
};
#endif
--------------------------------------
clArrayKlasse.cpp
#include <vcl.h>
#include <fstream>
#include <iostream>
#include <conio.h>
#include <cstring>
#pragma hdrstop
using namespace std;
#include \"clArrayKlasse.h\"
#pragma package(smart_init)
template<class t>
ArrayKlasse<t>::ArrayKlasse(int Maximum)
{
Max=Maximum;
Used=0;
PresentPosition=0;
Data = new t[Max];
}
template<class t>
ArrayKlasse<t>::ArrayKlasse(const ArrayKlasse & Array)
{
Max=Array.Max;
Used=Array.Used;
PresentPosition=Array.PresentPosition;
Data=new t[Max];
for int i=0;i<Used;i++)
Data[i]=Array.Data[i];
}
template<class t>
ArrayKlasse<t>::~ArrayKlasse()
{
delete [] Data;
}
// ******* Overloading ******
template<class t>
ArrayKlasse<t> ArrayKlasse<t>::operator=(const ArrayKlasse & Array)
{
if (this != &Array)
{
delete [] Data;
Max=Array.Max;
Used=Array.Used;
PresentPosition=Array.PresentPosition;
Data=new t[Max];
for (int i=0;i<Used;i++)
Data[i]=Array.Data[i];
}
return *this;
}
// ***** Access metoder *****
template<class t>
void ArrayKlasse<t>::Add(t Ny)
{
if (Used>=Max)
Grow();
Data[Used++]=Ny;
}
template<class t>
void ArrayKlasse<t>::First()
{
PresentPosition=0;
}
template<class t>
void ArrayKlasse<t>::Next()
{
PresentPosition++;
}
template<class t>
bool ArrayKlasse<t>::More()
{
return PresentPosition<Used;
}
template<class t>
int ArrayKlasse<t>::Length()
{
return Used;
}
template<class t>
t ArrayKlasse<t>::GetData()
{
return Data[PresentPosition];
}
// ***** Private Metoder *****
template<class t>
void ArrayKlasse<t>::Grow()
{
Max+=3;
t * Bigger=new t[Max];
for (int i=0;i<Used;i++)
Bigger[i]=Data[i];
delete [] Data;
Data=Bigger;
}
--------------------------
Med Venlig Hilsen
/Sune
NB: Jeg bruger Borland C++ Builder v5.0
