我有Java背景,正在尝试了解C++中的多态性。具体来说,如何调用其父类定义的std vector 中的一系列子类,以调用特定方法。我想做的是让子类重写将被调用的父类(super class)方法。但是,我不确定如何在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” vector 中Tile的另一个子类。我做错了什么或想念什么?提前致谢!
最佳答案
您需要一个Tile*
的 vector ,或者更好的是std::unique_ptr<Tile>
;