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) {}
我卡在一个涉及多态性的问题上。我的代码一直告诉我,我的 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) {}