我有一个有 5 个子类的基类。
如果在我的基类中我有这个:
virtual CpuPort &getsecondDataPort()=0;
那么这意味着必须为所有子类实现该方法,对吗?
但我不希望这样,因为我知道只有当我有特定子类的对象时我才会调用该方法,所以我认为我可以写这个:
virtual CpuPort &getsecondDataPort();
并仅在我想要的子类中实现它。但这给了我这个错误:
/base.cc:254: undefined reference to `vtable for BaseCPU'
并在其他子类中:
undefined reference to `typeinfo for BaseCPU'
其中 BaseCPU 是我的基类对象。
因为它是一个更大的库(实际上是模拟器)的一部分,所以我想尽可能少地进行更改。所以请不要建议像“只在你的子类中定义”这样的东西,因为我想遵循到目前为止的代码组织方式,除非这是解决问题的唯一方法。
知道为什么会发生这种情况吗?
谢谢