vector<vector<warrior*>> warriors;warriors[position][camp] = new lion(warrior_hp[0], warrior_sum[camp], warrior_strength[0],hp_residue[camp]); warrior是lion的基类,如何访问lion的成员
时间: 2023-12-29 15:02:23 浏览: 66
python 实现访问类成员
在这个代码中,虽然 `warrior` 是 `lion` 的基类,但是我们将 `new` 返回的指针赋值给了 `warriors[position][camp]`,也就是一个 `warrior*` 类型的指针,因此在访问成员时只能使用 `warrior` 类型中定义的成员。如果你需要访问 `lion` 类型中定义的成员,可以考虑使用 `dynamic_cast` 运算符进行类型转换,例如:
```c++
lion* lion_ptr = dynamic_cast<lion*>(warriors[position][camp]);
if (lion_ptr != nullptr) {
// 使用 lion_ptr 访问 lion 类型中定义的成员
}
```
需要注意的是,`dynamic_cast` 运算符会在运行时检查指针所指向的对象是否是目标类型的实例,如果不是则返回 `nullptr`。因此,在使用 `dynamic_cast` 进行类型转换时,需要保证指针所指向的对象的动态类型确实是目标类型或者其派生类。
阅读全文