我有一個Java背景,我想了解C++中的多態。具體而言,如何迭代由超類定義的std向量中的一系列子類,以便調用特定的方法。我想要做的是讓子類重寫將要調用的超類方法。但是,我不確定如何在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
}
眼下對於僅環所謂的 「瓦:: drawTile()」,但我希望它叫「Tile_Grass :: drawTile()」,或者是「tileVector」向量中Tile的另一個子類。我做錯了什麼或失蹤?提前致謝!