これは長い間C++ユーザーにとって簡単な質問だと確信しています。これはパターンであるか、問題を他の方法で解決する必要がありますが、私がPython開発者であり、C++の初心者であることを考えると、それがどのようになっているのかわかりません通常行われます。
インターフェイスを尊重する2つの異なるクラスのいずれかであるオブジェクトへのポインターを格納するクラスがあるとします。たとえば、次のようになります。
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();
まず、私はこれが機能しないことを知っています。なぜなら、どうすればこの効果を得ることができるのでしょうか? インターフェイスを使用して実装された同じメソッドを使用するためのクラスのメンバーが必要であり、いずれかを使用するたびにすべての派生クラスにキャストしようとするのを避けたい彼の方法。