【发布时间】:2020-09-05 21:39:16
【问题描述】:
我有
class Skill
{
public :
virtual void printSkill();
//....
}
class Person : public Skill
{
//...
}
在以前的设计中,每个人可以拥有一项技能,我可以打印出来
Person p;
p.printSkill();
现在我们要添加多个技能并显示它们。 我改变了:
class Person
{
private:
vector<Skill*> m_skills;
pubcic:
void addSkill(Skill *s) { m_skills.push_back(s);}
void printSkills() const {
for auto it = m_skills.begin(); it != m_skills.end(); ++it)
{
it->printSkill();
}
}
}
class Skill1 : public Skill
{
void printSkill() ;
}
class Skill2 : public Skill
{
void printSkill() ;
}
Person p;
Skill1 s1;
Skill2 s2;
p.addSkill(&s1);
p.addSkill(&s2);
这应该可以
但我不喜欢这个。没有addSkill 方法我可以解决这个问题吗?使用多重继承?
【问题讨论】: