C++ 没有合适的默认构造函数我迷路了

C++ No Appropriate Default Constructor I am lost

我卡在一个涉及多态性的问题上。我的代码一直告诉我,我的 class 没有默认构造函数,在这种情况下,我命名为生物,即使我确实实例化了一个在生物 class 中采用字符串的构造函数。我有一种感觉,我在这里遗漏了一些非常小的东西,希望有人能帮我解决这个问题。代码如下。

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;
}

我只在这个片段中包含了 classes 以使其简短并专注于我认为问题所在的地方。任何帮助将不胜感激。

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

等同于

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

并且Creature没有默认构造函数。您需要:

Monster::Monster(string pname) : Creature(pname) {}