Kezdőoldal » Számítástechnika » Programozás » Miért nem működik ez a Visual...

Amanda88 kérdése:

Miért nem működik ez a Visual C++ program?

Figyelt kérdés

Ez a program még nem csinál semmit, csak egy üres ablakot kéne megjelenítenie. Ha nem hozok létre objektumot, működik, nem jelez hibát. Ha viszont létrehozok egy Gyumolcs objektumot a Raktar.cpp-ban, ezt a két hibát adja:

unresolved external symbol "public: virtual void __thiscall Aru::Kiir(void)" (?Kiir@Aru@@UAEXXZ)

és

fatal error LNK1120: 1 unresolved externals


A program:


Aru.h:


#include <iostream>

#pragma once


class Aru

{

public:

int kod;

virtual void Kiir();

};


Gyumolcs.h:


#include <iostream>

#include "Aru.h"

#pragma once


class Gyumolcs: public Aru

{

public:

bool friss;

int kiloar; // 1 kg ára

int keszletkilo; // ennyi kg van készleten

void Kiir();

};


Ital.h:


#include <iostream>

#include "Aru.h"

#pragma once


enum Kiszereles: int

{

FelLiter,

EgyLiter,

KetLiter

};


class Ital: public Aru

{

public:

Kiszereles kiszereles; // 0.5 literes, 1 literes, 2 literes

int darab;

int felAr;

int egyAr;

int kettoAr;

void Kiir();

};


Gyumolcs.cpp:


#include <iostream>

using namespace std;

#include "Gyumolcs.h"


void Gyumolcs::Kiir()

{

if (friss=true)

{ cout<<"A gyumolcs friss"<<endl; }


else if (friss=false)

{ cout<<"A gyumolcs nem friss"<<endl; }


cout<<"A gyumolcs "<<kiloar<<" kg"<<endl;


};


Raktar.cpp:


#include <iostream>

using namespace std;

#include "Aru.h"

#include "Gyumolcs.h"

#include "Ital.h"


int main()

{

Gyumolcs korte;


system("pause");

return 0;

}



2013. okt. 10. 16:13
 1/2 iostream ***** válasza:

Vajon mi lehet a gond? Próbáljuk értelmezni a hibaüzenet!


Ha viszont létrehozok egy Gyumolcs objektumot a Raktar.cpp-ban, ezt a két hibát adja:

unresolved external symbol "public: virtual void __thiscall Aru::Kiir(void)" (?Kiir@Aru@@UAEXXZ)

és


unresolved: feloldatlan

external symbol: külső szimbólum


Valaki hivatkozik az Aru::Kiir függvényre, és a linker ennek a definícióját nem találja egyik fordítási egységben sem.


Itt egy jó link a magyarázattal: [link]


Ha nem akarod egy bázisosztály függvényét kifejteni, tedd pure virtuallá, = 0 a végére.

Ez három dolgot okoz.

1. Nem lesz kötelező kifejteni a függvényt.

2. Nem lehet példányosítani az osztályt (közvetlenül).

3. A leszármazottaknak kötelező lesz felülírni a függvényt, vagy rájuk is vonatkozik ez a három.

2013. okt. 10. 16:51
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Köszönöm, mostmár értem :) És működik :)
2013. okt. 10. 17:16

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!