[英]C++: Array of differents types of objects (access to the methods of the child class)
我创建了一个Position
数组,它是几个类的父级 class: Player
、 Item
、 Mob
和Map
。
我想在我的Position
数组(动态创建的对象)中创建一个包含多种类型对象的数组,然后想使用我的对象的唯一方法。
我不能使用虚拟类型,因为我必须编写所有类的方法,这样会不连贯。
所以我请你尝试解决这个问题。
Map.h:
...
static constexpr int mapColonne{14};
static constexpr int mapLigne{6};
Position *positionObject[mapLigne][mapColonne];
...
Map.cpp:
...
positionObject[i][j] = new Player("Player1");
positionObject[i][j]->infoPlayer();
...
错误:class “位置”没有成员“infoPlayer
如果元素不包含您认为它包含的类型,您有以下选项,具体取决于您希望发生什么:
static_cast<Player *>(positionObject[i][j])->infoPlayer();
- 类型不匹配的未定义行为。dynamic_cast<Player *>(positionObject[i][j])->infoPlayer();
- cast 在类型不匹配时返回 null,您可以检查这一点。 如果不检查 null,则在 null 指针上调用方法可能会崩溃。dynamic_cast<Player &>(*positionObject[i][j]).infoPlayer();
- 类型不匹配异常。我会用:
dynamic_cast
通常是糟糕设计的标志。 我认为没有理由在这里使用它。 您所有的类都应该有通用方法(在基类中声明),例如draw()
、 update()
等,您会为板上的每个 object 调用这些方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.