C ++ Нет соответствующего конструктора по умолчанию Я потерян - PullRequest
0 голосов
/ 03 октября 2019

Я застрял в проблеме, связанной с полиморфизмом. Мой код постоянно говорит мне, что для моего класса нет конструктора по умолчанию, в этом случае я назвал существо, хотя я и создал экземпляр конструктора, который принимает строку в классе существа. У меня такое чувство, что я скучаю по чему-то очень маленькому здесь, и надеялся, что кто-то может мне помочь с этим. Код выглядит следующим образом.

class Creature 
{
public:

Creature(string);
virtual void DoAction() = 0;
virtual void DrawOnScreen() = 0;


protected:
string CreatureName;
};


Creature::Creature(string pname)
{
this->CreatureName = pname;
}; 


class Monster : public Creature
{

Monster(string CreatureName);
void DoAction();

protected: 
string CreatureName;

};


Monster::Monster(string pname)
{
this->CreatureName = pname;
};

class Player : public Creature
{
Player(string CreatureName);
void DoAction();

protected:
string CreatureName;
};

Player::Player(string pname)
{
this->CreatureName = pname;
}

class WildPig : public Creature
{
WildPig(string CreatureName);
void DoAction();
protected:
string CreatureName;
};

WildPig::WildPig(string pname)
{
this->CreatureName = pname;
}

class Dragon : public Creature
{
Dragon(string CreatureName);
void DoAction();
protected:
string CreatureName;
};

Dragon::Dragon(string pname)
{
this->CreatureName = pname;
}

Я включил в этот фрагмент только классы, чтобы он был кратким и сосредоточился на том, где, по моему мнению, лежит проблема. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 03 октября 2019
Monster::Monster(string pname)
{
    this->CreatureName = pname;
}

эквивалентно

Monster::Monster(string pname) : Creature()
{
    this->CreatureName = pname;
}

И Creature не имеет конструктора по умолчанию. Вам нужно:

Monster::Monster(string pname) : Creature(pname) {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...