LNK2001 Link error C++

Status
Niet open voor verdere reacties.

Myclos81

Gebruiker
Lid geworden
17 nov 2007
Berichten
157
Hallo, bij onderstaand programma krijg ik een link error. Heb al wat gezocht op het internet en het kan komen doordat hij een library niet vindt?

Weet er iemand een oplossing ?? Het is geschreven in C++.
Code:
#include <iostream>
using namespace std;

class Figuur
{
protected:
   char symbool;
public:
   Figuur(char symbool = '*')
      : symbool(symbool)
   {
   }
   void setSymbool(char sym)
   {
      symbool = sym;
   }

   virtual void teken() const = 0;      // zuiver virutele functie
};

class Rechthoek: public Figuur
{
private:
   int breedte, hoogte;
public:
   Rechthoek()
   {
   }
   Rechthoek(int breedte, int hoogte)
      : breedte(breedte), hoogte(hoogte)
   {
   }
   void teken() const;
};

class Driehoek: public Figuur
{
private:
   int grootte;
public:
   Driehoek()
   {
   }
   Driehoek(int grootte)
      : grootte(grootte)
   {
   }
   void teken() const;
};

int main()
{
   Figuur* fig[6];      // array van pointers naar figuur

   fig[0] = new Driehoek[3];
   fig[1] = new Rechthoek[10,4];
   fig[1] -> setSymbool('@');
   fig[2] = new Driehoek(6);

   for(int i = 0; i<3; i++)
   {
      fig -> teken();
      cout << endl;
   }

   return 0;
}

--------------------Configuration: gl - Win32 Debug--------------------
Linking...
gl.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Rechthoek::teken(void)const " (?teken@Rechthoek@@UBEXXZ)
gl.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Driehoek::teken(void)const " (?teken@Driehoek@@UBEXXZ)
Debug/gl.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

gl.exe - 3 error(s), 0 warning(s)
 
Laatst bewerkt door een moderator:
Code:
class Rechthoek: public Figuur
{
private:
int breedte, hoogte;
public:
Rechthoek()
{
}
Rechthoek(int breedte, int hoogte)
: breedte(breedte), hoogte(hoogte)
{
}
[COLOR="RoyalBlue"]void teken() const;[/COLOR]
};

Vul De functie in blauw in en hij zal geen linking errors meer geven.
Code:
gl.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Rechthoek::teken(void)const " (?teken@Rechthoek@@UBEXXZ)
Wil hier zeggen "Ik vind ALLEEN maar een prototype dus ik weet niet wat ik met de functie teken( ) moet doen."

In de for moet je ook dit nog aanpassen:

Code:
for(int i = 0; i<3; i++)
{
fig[COLOR="RoyalBlue"][i][/COLOR] -> teken();
cout << endl;
}
 
Hoe bedoel je "vul de functie in blauw in" ??

Wel laat hem iets doen?

PHP:
void teken() const
{
    ;
}

Is wat je minstens nodig hebt om te kunnen compileren ( dit zal natuurlijk geen output geven ). Maar je zal best daar een bepaalde tekenopdracht insteken neem ik aan? Je moet nog invullen wat je verwacht dat die functie doet.

void teken( ) const; is enkel een prototype! Dit doet dus niks, en de compiler heeft bij elke functie een idee nodig van wat deze doet ( behavale als je met Qt signals begint te werken ).
 
Lol, amai.

Die ben ik doodweg vergeten. Was een oefening waar we moeten op verderwerken... :o

En ik maar zoeken, bedankt voor je hulp bzub
 
Lol, amai.

Die ben ik doodweg vergeten. Was een oefening waar we moeten op verderwerken... :o

En ik maar zoeken, bedankt voor je hulp bzub

Geen probleem, kan iedereen overkomen. Klik even op 'vraag opgelost' dan maak je de moderator blij ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan