PDA

View Full Version : Unresolved External. Uso di enum in classe derivata.


-Ivan-
19-07-2013, 15:48
L'errore è unresolved external riguardo ad un enum che utilizzo nel costruttore di una classe.

La classe derivata è questa e l'errore credo derivi dalla riga rossa (credo perchè l'unresolved external con doppio click non ti porta alla riga che lo genera):


#include <cstdlib>
#include "IM_Weapon.h"

class IM_WeaponPistol : IM_Weapon
{

public:

//contructor for Shotgun
IM_WeaponPistol()
{
SetWeaponType(EWeaponType::pistol);
SetMaxAmmunitions(35);
SetDamage(8);
SetProjectileExplode(false);
//1.2 secs to equip a shotgun
SetEquippingTime(1200);
}
};


Questa classe deriva da questa:


enum EAmmo{ low_ammo, normal_ammo, loads_ammo };
enum EWeaponType{ shotgun, rocket_launcher, pistol };

class IM_Weapon
{

private:

...roba....

public:

IM_Weapon(){}
~IM_Weapon(){}

...molta altra roba...
};


Se non ho capito male ha problemi con l'enum EWeaponType.
Copio anche l'errore per intero che per me è abbastanza illeggibile:

Error 1 error LNK2019: unresolved external symbol "public: void __thiscall IM_Weapon::SetWeaponType(enum EWeaponType)" (?SetWeaponType@IM_Weapon@@QAEXW4EWeaponType@@@Z) referenced in function "public: __thiscall IM_WeaponPistol::IM_WeaponPistol(void)" (??0IM_WeaponPistol@@QAE@XZ) C:\Users\Ivan\Documents\C++ development\Immortal\Immortal\IM_MainChar.obj Immortal



E' lì l'errore? L'enum dovrebbe vederlo perchè ho incluso l'header in cui è dichiarato.

vendettaaaaa
19-07-2013, 15:54
L'unresolved symbol è questo:
"public: void __thiscall IM_Weapon::SetWeaponType(enum EWeaponType)"
Il linker non vede la funzione SetWeaponType, l'enum non c'entra niente.

Scusa, ma perchè stai cercando di programmare un videogame in C++ senza conoscere bene il C++?

-Ivan-
19-07-2013, 17:17
Trovato il problema, grazie! Non avevo implementato il metodo, maledetto me.

Non sto assolutamente cercando di implementare un gioco, sto solo facendo un esercizio, molto piccolo in realtà, c'è a mala pena un sistema di inventario per le armi e due personaggi che si sparano (niente grafica, solo qualche linea scritta a video), nel quale utilizzare un paio di tecniche che ho letto in un libro e su cui devo fare pratica (implementazione di una macchina a stati finiti per creare intelligenze artificiali e un sistema che usi la fuzzy logic per la selezione delle armi).

Grazie come sempre dei consigli:D .