我很难找到将类似类的实例存储到向量中的方法。我曾想过使用基类,但我不确定它是否有效。例如,使用体育:
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(...));
向量中的所有项目都指向玩家基类,但它们实际上可以是派生类的对象。