我有一个层次结构:
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 的功能。这导致了我描述的问题。