刚刚在开发遇上一个令我十分不解的问题。大致情况是这样的:
class A 中有两个纯虚函数,一个是 UpdateBounds(),一个是 UpdateAttribute()。class B 派生自 class A,并实现了这两个函数。然后,class A 中一个函数调用了 UpdateAttribute(),跟踪显示,最后被调用的居然是 class B 的 UpdateBounds(),而不是 class B 的 UpdateAttribute()!真是令我百思不得其解。解决的方法也很奇怪,我把 UpdateAttribute 的名称改为 SetAttribute 就一切 OK 了。疑似编译器在处理虚函数表时抑或是函数换名机制上出错?为了赶开发进度,暂时没有空去研究了。如果有高手遇见过此类问题,请予赐教。
我用的是 Visual C++ 8.0,非托管代码。
class A 中有两个纯虚函数,一个是 UpdateBounds(),一个是 UpdateAttribute()。class B 派生自 class A,并实现了这两个函数。然后,class A 中一个函数调用了 UpdateAttribute(),跟踪显示,最后被调用的居然是 class B 的 UpdateBounds(),而不是 class B 的 UpdateAttribute()!真是令我百思不得其解。解决的方法也很奇怪,我把 UpdateAttribute 的名称改为 SetAttribute 就一切 OK 了。疑似编译器在处理虚函数表时抑或是函数换名机制上出错?为了赶开发进度,暂时没有空去研究了。如果有高手遇见过此类问题,请予赐教。
我用的是 Visual C++ 8.0,非托管代码。