Java のバックグラウンドがあり、C++ でのポリモーフィズムを理解しようとしています。具体的には、特定のメソッドを呼び出すために、スーパークラスによって定義された std ベクトル内の一連のサブクラスを反復処理する方法。私がやりたいことは、サブクラスが呼び出されるスーパークラスメソッドをオーバーライドすることです。ただし、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 の別のサブクラスを呼び出すようにしたいと考えています。私は何が間違っているか、欠けていますか? 前もって感謝します!