我最近遇到了一个烦人的问题,我对自己的解决方法不满意:我有一个程序维护一个指向基类的指针向量,并且我在那里存储了所有类型的子对象指针。现在,每个子类都有自己的方法,主程序可能会或不会调用这些方法,具体取决于对象的类型(请注意,尽管它们都大量使用基类的通用方法,因此这证明了继承的合理性)。
我发现有一个“对象标识符”来检查类类型(然后调用或不调用方法)很有用,这已经不是很漂亮了,但这不是主要的不便之处。主要的不便之处在于,如果我想真正能够使用基类指针调用派生类方法(或者甚至只是将指针存储在指针数组中),那么需要在基类中将派生方法声明为虚拟班级。
从 C++ 编码的角度来看是有意义的.. 但这对我来说是不切实际的(从开发的角度来看),因为我计划在不同的文件中创建许多不同的子类,可能是由不同的人创建的,而我不想每次都调整/维护基类,添加虚拟方法!
这该怎么做?本质上,我要问的(我猜)是如何实现类似 Objective-C NSArrays 的东西——如果你向一个没有实现该方法的对象发送消息,那么什么都不会发生。
问候