Avatar billede Lasse Novice
25. maj 2005 - 16:37 Der er 8 kommentarer og
1 løsning

Linker kan ikke finde extern symbol

Hej

Jeg har lavet en klasse i evc (regner med at det er det samme som i mvc). Klassen er erklaeret som foelger:


template <class T>
class CStream
{
public:
  CStream();
  CStream(int initialSize);
  virtual ~CStream();
};

Til dette foelger der en cpp fil.


template <class T>
CStream<T>::CStream()
{
    this->Initialize();
    this->SetSize(255);
}

template <class T>
CStream<T>::CStream(int initialSize)
{
    this->Initialize();
    this->SetSize(initialSize);
}

template <class T>
CStream<T>::~CStream()
{
    CleanUp();
}

Jeg refererer nu .h filen fra en anden .h fil og opretter en instans saaledes:

CStream<WCHAR> stream1; // unresolved external symbol
CStream<WCHAR> stream2(); // ok
CStream<WCHAR> stream3(100); // unresolved external symbol
CStream<WCHAR>* stream4 =  new CStream<WCHAR>(100); // unresolved external symbol
CStream<WCHAR>* stream5 =  new CStream<WCHAR>(); // unresolved external symbol

Ok, det er jo sikkert mig der er for groen. Hvad goer jeg forkert her?
Avatar billede Lasse Novice
25. maj 2005 - 17:01 #1
Jeg ved ikke helt hvordan det fungerer.... men min .h fil der indeholder min CStream template class ikke "ser" .cpp filen med implementeringen. Hvad skal jeg goere for at dette sker?
Avatar billede arne_v Ekspert
25. maj 2005 - 17:16 #2
jeg mener at du skal have implementationen af din template
klasse enten inline i din .h fil eller i samme .cpp fil som den bruges
Avatar billede Lasse Novice
25. maj 2005 - 17:50 #3
filen hedder f.eks. ExpertsysStream.h og cpp filen hedder ExpertsysStream.cpp og begge filer ligger i samme bibliotek. Det burde da vaere nok, ik' sandt?
Avatar billede arne_v Ekspert
25. maj 2005 - 18:15 #4
nej
Avatar billede Lasse Novice
25. maj 2005 - 18:36 #5
hmm, er det fordi det en en template klasse...? normale klasser fungerer da ikke paa den maade.
Avatar billede arne_v Ekspert
25. maj 2005 - 18:39 #6
ja

template klasser er lidt specielle
Avatar billede Lasse Novice
25. maj 2005 - 23:27 #7
med et svar saa er pointene dine ;)
Avatar billede arne_v Ekspert
25. maj 2005 - 23:30 #8
ok
Avatar billede bertelbrander Novice
25. maj 2005 - 23:50 #9
Der er en fin forklaring på problemet her:
http://www.parashift.com/c++-faq-lite/templates.html#faq-35.7
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester