私は階層を持っています:
class ICommand
{
public:
virtual void start() = 0;
};
class IExtendedCommand : public ICommand
{
public:
virtual void doSomethingElse() = 0;
};
class ConcreteCommand : public ICommand
{
public:
virtual void start() {};
}
class ExtendedConcreteCommand : public ConcreteCommand, public IExtendedCommand
{
public:
virtual void doSomethingElse() {};
}
ICommand および IExtendedCommand オブジェクトは、ファクトリによって作成されています。
何らかの理由で、ICommand のすべてのメソッドが ExtendedConcreteCommand 内で純粋であるとコンパイラが言うとき...
これを解決する理由と方法はありますか?
PS:はい、Android アプリを C++/Qt (3 年間使用していません) に移植しています。とにかく、あなたがこれにどのように対処するかを聞きたいです。
編集:
移植しているのはMPCとVLCのリモコンアプリです。アイデアは、ファクトリを介してプレーヤーに送信できるコマンドを作成することです。Factory は、ICommand を実装するオブジェクトへのポインターを返します。そのため、ファクトリの実装を切り替えることで、さまざまなコマンドを作成できます。ICommand は、すべての主要なメソッドとシグナルを宣言します。IExtendedCommand は、プレーヤー全体にいくつかの一般的な情報を追加します。だから私がしたいのは、ファクトリを介して IExtendedCommand をインスタンス化し、いくつかのプロパティを設定してから、start() メソッドで起動することです。また、ConcreteCommand の機能を再利用したいと考えています。それは私が説明した問題につながります。