[C++] Template class - unresolved external symbols

Pagina: 1
Acties:

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Hier mijn probleem:

Template class gemaakt
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//Header- file

template <class Item>
class StackasList:public AbstractStack
{
private:
    PointNode *First;
public:
    StackasList(); //default - constructor
    ~StackasList(); //destructor
    StackasList(const StackasList& TheList);//copy - constructor
    StackasList<Item>& operator=(const StackasList& TheList); //operator =


    void Push(const Item&);
    Item& Pop();
    Item& Top();

};


//gedeelte van c-file

template <class Item>
StackasList<Item>::StackasList()
{
  First = NULL;
}


template <class Item>
StackasList<Item>::~StackasList()
{
   PointNode* temp;
   while (First != NULL)
   {
      temp = First;
      First = First->next;
      delete temp;
   }
}



Nou wil ik in mijn Main() program een StackasList creeeren.
Op deze manier:

C++:
1
        StackasList<Point> bla;


Maar helaas ik krijg een linker error:

[Linker Error] Unresolved external 'StackasList::StackasList()' referenced from D:\DOCUMENTS AND SETTINGS\NICKY JASPERS\BUREAUBLAD\NEWPOLY\UMAIN.OBJ
[Linker Error] Unresolved external 'StackasList::~StackasList()' referenced from D:\DOCUMENTS AND SETTINGS\NICKY JASPERS\BUREAUBLAD\NEWPOLY\UMAIN.OBJ

Ik kan me voorstellen dat die fouten er komen en je hebt geen implementatie voor de constructor en destructor staan...maar nu snap ik dat niet helemaal. :|

Misschien dat er iemand is die het toevallig wel weet?
Alvast bedankt

[ Voor 7% gewijzigd door chem op 07-05-2003 18:58 . Reden: dan doe ik de code tags wel even voor je :) ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


Verwijderd

1) Kan je je code tussen [ code ] [ /code ] haakjes zetten?
2) Over welke taal / omgeving gaat dit?

Edit:
3) Gebruik de edit knop van je bericht ;)

[ Voor 21% gewijzigd door Verwijderd op 07-05-2003 18:59 ]


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Borland c++

Ik ben nog vrij nieuw hier maar dat zal je wel gemerkt hebben :)

[ Voor 76% gewijzigd door koli-man op 07-05-2003 19:02 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
yow dude een Template kun je eigenlijk niet in een *c(pp) zetten - of dat is toch niet proper en misschien kan borland het gewoon niet... je zet het best in een .inl file en die include je gewoon in je h file. Een template is namelijk pure ' header' (ie er word geen copde voor gemaakt totdat je het gebruikt) dus zet allereerst even de code in je H file en probeer nog eens...

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Thanx _/-\o_

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik kan me voorstellen dat die fouten er komen en je hebt geen implementatie voor de constructor en destructor staan...maar nu snap ik dat niet helemaal
Lees de opmerking van hobbit_be hierboven eerst eens, maar bedenk wel dat je natuurlijk wel een implementatie moet opgeven. Ik weet niet of je dat wel gedaan hebt, maar bovenstaande quote doet vermoeden van niet
.edit: niet goed gelezen, ze staan gewoon in de openingspost |:(
yow dude een Template kun je eigenlijk niet in een *c(pp) zetten
kan wel, alleen dan moet je de template definieren als export. Er is alleen om precies te zijn maar 1 compiler die dat ondersteunt, dus dat is wellicht geen optie ;)

[ Voor 7% gewijzigd door .oisyn op 07-05-2003 23:38 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Jawel. Ik snap dat die fouten voorkomen als je toevallig de implementatie van een constructor en destructor vergeten zou zijn. Maar in mijn geval was ik die niet vergeten. Daarom snapte ik die fout niet.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


Verwijderd

Gewoon onder aan je header file de cpp includen, dat is het meest gangbare bij template klassen naar mijn wete.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

koli-man schreef op 07 mei 2003 @ 23:30:
Jawel. Ik snap dat die fouten voorkomen als je toevallig de implementatie van een constructor en destructor vergeten zou zijn. Maar in mijn geval was ik die niet vergeten. Daarom snapte ik die fout niet.
oh wat stom, je hebt ze ook gewoon in je post gezet. Ik dacht even dat dat implementaties van Push en Pop waren |:(
dan heb ik niets gezegd :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Het is ook al laat :D

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
hobbit_be schreef op 07 May 2003 @ 19:45:
yow dude een Template kun je eigenlijk niet in een *c(pp) zetten - of dat is toch niet proper en misschien kan borland het gewoon niet
Je kunt de implementatie best in een .cpp file zetten. Alleen kun je het dan niet vanuit een andere .cpp file gebruiken met Borland, om precies de reden die .oisyn aangeeft: Borland heeft geen "export". Door de implementatie in de header te zetten komt het in elke .cpp file.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
en dan moet je de cpp - file wel includen waar je de template class nodig hebt neem ik aan. Als ik het goed begrijp

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
MSalters schreef op 08 May 2003 @ 21:27:
[...]
die .oisyn aangeeft: Borland heeft geen "export". Door de implementatie in de header te zetten komt het in elke .cpp file.
welke compiler heeft er wel een export voor templates dan?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

hobbit_be schreef op 08 May 2003 @ 22:33:
welke compiler heeft er wel een export voor templates dan?
Comeau.

Professionele website nodig?


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
koli-man schreef op 08 May 2003 @ 21:53:
en dan moet je de cpp - file wel includen waar je de template class nodig hebt neem ik aan. Als ik het goed begrijp
Met export niet, zonder export wel. Borland = geen export = wel includen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
is die deftig? ie qua speed performance, en goede (correcte output)? In ieder geval mijn punt was dat in bijna alle gevallen het dus niet kan (VC++?, Intel?, GCC?, ?) dat zal toch zo'n 99% usage hebben...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik geloof dat Comeau kan compilen naar C-code, wat je dus weer door je favo compiler heen kunt gooien.
Maar MSalters kan je daar vast meer over vertellen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Yep, ik heb van Greg Comeau een kopietje gekregen. Je hebt nog steeds een C compiler nodig, bijvoorbeeld VC6/7 in C mode, of de gratis Borland compiler.
De snelheid van compileren is niet geweldig (oa daardoor). De snelheid van de geproduceerde code is (waarschijnlijk) normaal: ik merkte niets bijzonders, maar ik heb er niet met een stopwactch bijgezeten. De kwaliteit van de code is behoorlijk hoog; het is een EDG frontend en dus vergelijkbaar met Intel - alleen heeft Intel een iets oudere versie van EDG in hun huidige product zitten.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1