如何将相关类的实例存储到向量c++中

  • 本文关键字:存储 向量 c++ 实例 c++ class
  • 更新时间 :
  • 英文 :


我很难找到将类似类的实例存储到向量中的方法。我曾想过使用基类,但我不确定它是否有效。例如,使用体育:

class player //base
{
std::string name;
int age;
player(std::string name, int age) name (name), age (age);
};
class soccerplayer: public player
{
float goal_per_game;
//etc
};
class basketballplayer: public player
{
float defensive_blocks;
float three_pointers_per_game;
//etc
};
class hockeyplayer: public player
{
//etc
};
std::vector<player> favoriteplayers;
favoriteplayers.push_back(player("Lionel Messi", 33));

我不确定是否有一个方法来存储这个类的各种实例。如果没有,可能的解决方法是什么?

您可以使用基类的(智能(指针向量与值向量。

std::vector<std::unique_ptr<player> > favoriteplayers;
favoriteplayers.emplace_back(new sockerplayer(...));
favoriteplayers.emplace_back(new hockeyplayer(...));

向量中的所有项目都指向玩家基类,但它们实际上可以是派生类的对象。

最新更新