簡體   English   中英

如何將相關類的實例存儲到向量 c++

[英]How can I store instances of related classes into a vector 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));

我不確定是否有一種方法可以存儲此 class 的各種實例。 如果沒有,有什么解決方法是可能的?

您可以使用指向基本 class 的(智能)指針向量與值向量。

std::vector<std::unique_ptr<player> > favoriteplayers;

favoriteplayers.emplace_back(new sockerplayer(...));
favoriteplayers.emplace_back(new hockeyplayer(...));

向量中的所有項目都指向播放器基類,但它們實際上可以是派生類的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM