我有 Java 背景,我正在尝试理解 C++ 中的多态性。具体来说,如何迭代其超类定义的标准向量中的一系列子类,以便调用特定方法。我想做的是让子类覆盖将被调用的超类方法。但是,我不确定如何在 C++ 中做到这一点。
以下是一些有助于加速的代码:
class Tile {
public:
virtual void drawTile();
}
void Tile::drawTile() {} // not sure if this is needed?
class Tile_Grass : public Tile {
public:
void drawTile();
}
void Tile_Grass::drawTile() { ... do stuff ... }
我想做的是:
using namespace std;
for (vector<Tile>::iterator itr = tileVector.begin(); itr != tileVector.end(); ++itr) {
itr->drawTile(); // draws Tile_Grass, or any other sub class of Tile, but NOT Tile
}
现在 for 循环只调用“Tile::drawTile()”,但我想让它调用“Tile_Grass::drawTile()”,或者“tileVector”向量中的另一个 Tile 子类。我做错了什么或错过了什么?提前致谢!