向量和抽象类

Vectors and abstract classes

本文关键字:抽象类 向量      更新时间:2023-10-16

在SFML中,有几种类型的对象(sf::Shape、sf::Sprite、sf::Text)继承了抽象基类sf::Drawable。如果我创建了一个std::向量,我可以在该向量中存储所有继承sf::Drawable类的对象吗?

如果您创建一个std::vector来存储某种形式的指针(实际上是一个智能指针),您就可以做到这一点。

不能创建抽象类的对象,因此不能将它们存储在向量中。但是,您可以将指向这些对象的指针存储在向量中。

是的,如果您将向量声明为,则可以

std::vector <sf::Drawable*> 

基于这个基类的对象上的任何指针都可以存储在向量中。

如果我创建了一个std::向量,我可以在该向量中存储所有继承sf::Drawable类的对象吗?

是的,你可以做到。那么您将需要一个指针向量(因为您无法实例化抽象类)。