我很确定这是一个长期 c++ 用户的简单问题,这应该是一个模式,或者问题应该以任何其他方式解决,但鉴于我是 Python 开发人员和 C++ 的新手,我不知道它是怎么回事通常完成。
假设我有一个类,我想在其中存储一个指向对象的指针,该对象可以是尊重接口的两个不同类中的一个,例如:
class AllPlayers
{
public:
virtual void play();
};
class VlcPlayer: public AllPlayers
{
public:
virtual void play();
};
class Mplayer: public AllPlayers
{
public:
virtual void play();
};
class MyMediaPlayer
{
public:
MyMediaPLayer(int playerType);
AllPlayers m_player;
};
MyMediaPlayer::MyMediaPlayer(int PlayerType)
{
if (PlayerType == 0) {
VlcPlayer tmp_player;
m_player = static_cast<AllPlayers> (tmp_player);
}
else {
Mplayer tmp_player;
m_player = static_cast<AllPlayers> (tmp_player);
}
}
MyMediaPlayer test(0);
test.play();
首先,我知道这行不通,这似乎很正常,但我怎么能得到这种效果呢?我想拥有一个类的成员,我将使用相同的方法,使用接口实现,并且我想避免每次我要使用其中一个时都尝试强制转换为每个派生类他的方法。