封装、继承、多态)创建三个类,组成一个继承树,表示游戏中

3、(封装、继承、多态)创建三个类,组成一个继承树,表示游戏中
的角色。描述如下:"
父类:Role。是所有职业的父类。属性:name,表示角色的名字。"
方法:public int attack),该方法返回值为角色攻击对敌人的伤害。
Role 有两个子类:
1)法师Magicer 属性:魔法等级(范围为1~10)方法:public
int attack,该方法返回法师的攻击对敌人造成的伤害值。 法师攻
击伤害值为:魔法等级*魔法基本伤害值(固定为5)
2) 战士 Soldier 属性:攻击伤害值方法:public int attack(),
该方法返回战士的攻击对敌人造成的伤害值。战士的攻击伤害值为:
其攻击伤害属性值 注意:上述的三个类所有属性都应当作为私有,
并提供相应的 get/set 方法。
再设计一个 Team 类,表示一个组队。具有如下方法
addMember,表示组队增加一个成员。注意:组队成员最多为6人"

#include <iostream>
#include <string>
using namespace std;

// 父类: Role
class Role {
private:
    string name;
public:
    Role(string name) : name(name) {}  // 构造函数
    string getName() { return name; }  // get方法
    void setName(string name) { this->name = name; }  // set方法
    virtual int attack() = 0;  // 纯虚函数:攻击方法
};

// 子类: Magicer
class Magicer : public Role {
private:
    int magicLevel;  // 魔法等级
public:
    Magicer(string name, int magicLevel) : Role(name), magicLevel(magicLevel) {}  // 构造函数
    int getMagicLevel() { return magicLevel; }  // get方法
    void setMagicLevel(int magicLevel) { this->magicLevel = magicLevel; }  // set方法
    int attack() { return magicLevel * 5; }  // 攻击方法
};

// 子类: Soldier
class Soldier : public Role {
private:
    int damage;  // 攻击伤害值
public:
    Soldier(string name, int damage) : Role(name), damage(damage) {}  // 构造函数
    int getDamage() { return damage; }  // get方法
    void setDamage(int damage) { this->damage = damage; }  // set方法
    int attack() { return damage; }  // 攻击方法
};

// Team类
class Team {
private:
    Role** members;  // 成员数组
    int count;  // 成员数量
public:
    Team() : members(new Role*[6]), count(0) {}  // 构造函数
    void addMember(Role* member) {  // 添加成员方法
        if (count < 6) {
            members[count] = member;
            count++;
            cout << member->getName() << "加入队伍" << endl;
        }
        else {
            cout << "队伍已满,无法添加成员" << endl;
        }
    }
};
示例代码可以这样调用:

int main() {
    Magicer* magicer = new Magicer("Tom", 6);
    Soldier* soldier = new Soldier("Jerry", 20);
    cout << magicer->getName() << "的攻击力为:" << magicer->attack() << endl;
    cout << soldier->getName() << "的攻击力为:" << soldier->attack() << endl;
    Team team;
    team.addMember(magicer);
    team.addMember(soldier);
    delete magicer;
    delete soldier;
    return 0;
}