有一个基类warrior和其五个派生类lion wolf ninja icrman dragon,每次都会产生其中的一个武士,并且每次产生的时候都会有位置和阵营,如何保存武士的位置和阵营信息并且能够访问位置和阵营信息以及武士的数据成员和函数成员c++
时间: 2024-02-17 17:00:01 浏览: 89
C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar
4星 · 用户满意度95%
可以定义一个包含位置和阵营信息的结构体,然后在每个武士类中加上该结构体作为成员变量,并且在每个派生类的构造函数中初始化这些信息。同时,可以定义一个基类指针数组,每个位置对应一个指针,指向该位置上的武士对象,如果该位置上没有武士,则指针为空。这样就可以保存武士的位置和阵营信息,并且能够访问位置和阵营信息以及武士的数据成员和函数成员。
代码示例:
```
struct Position {
int x;
int y;
int camp;
};
class Warrior {
public:
virtual void attack() = 0;
virtual void defense() = 0;
...
protected:
Position pos;
};
class Lion : public Warrior {
public:
Lion(int x, int y, int camp) {
pos.x = x;
pos.y = y;
pos.camp = camp;
...
}
...
};
class Wolf : public Warrior {
public:
Wolf(int x, int y, int camp) {
pos.x = x;
pos.y = y;
pos.camp = camp;
...
}
...
};
...
Warrior* warriors[N]; // 基类指针数组
// 初始化武士对象并放置在指定位置
warriors[0] = new Lion(1, 1, 1);
warriors[1] = new Wolf(2, 3, 2);
...
```
阅读全文