Witam,
napisałem krótki kod, w którym korzystam z polimorfizmu, natomiast przy kompilacji wyskakuje następujący błąd:
Error LNK2019 unresolved external symbol "public: __cdecl Character::Character(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,int)" (??0Character@@QEAA@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HH@Z) referenced in function "public: __cdecl Warrior::Warrior(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,int)" (??0Warrior@@QEAA@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HH@Z)
Kod:
#include <iostream>
using namespace std;
class Character {
protected:
string name;
int hp;
int strenght;
public:
Character(string n, int h, int s);
virtual void attact(Character* target) {
int dmg = rand() % strenght;
cout << this->name << " hit " << target->name << " for " << dmg << " damage" << endl;
target->hp -= dmg;
}
void show() {
cout << this->name << ": " << this->hp << endl;
};
};
class Warrior :public Character {
public:
Warrior(string n = "Knight", int h = 100, int s = 10) :Character(n, h, s){
this->name = n;
this->hp = h;
this->strenght = s;
cout << "Warrior " << this->name << " has been created" << endl;
}
};
class Mage :public Character {
protected:
int mana;
public:
Mage(string n, int h, int s, int m) :Character(n, h, s) {
this->mana = m;
cout << "Mage" << this->name << "has been created" << endl;
}
};
int main() {
Warrior* W = new Warrior;
W->show();
delete W;
return 0;
}
Z góry dziękuję za każdy pomocny komentarz c: