我在使用 C++ 上的覆盖方法时遇到问题
首先,一切正常,然后,我进行了一些更改以使代码更加“有条理”并在 GitHub 上共享。
在做了一些 OO 更改后,为了方便和更容易理解,我的代码停止了工作,并且因为一件非常奇怪的事情。
ViewGroup
是一个扩展的类View
,并具有从 中覆盖的方法 HitTest View
。
所以,基本上:如果我调用 hitTest,我必须在 ViewGroup(如果它是 ViewGroup)或 View 上运行;
没关系,我把它virtual
放在我的方法上,如果我直接在我的 ViewGroup 上运行,它实际上会从 ViewGroup 运行 hitTest,
但是,如果我创建一个新指针并尝试运行,它不再在 ViewGroup 上运行 hitTest,而是在 View 上运行。为了便于理解:
ViewGroup *v = new ViewGroup();
View *t = v;
v->hitTest(100,100); // Runs on ViewGroup (OK)
t->hitTest(100,100); // Runs on View (NOT OK)
更新:
ViewGroup.h:https ://www.dropbox.com/s/a3lqbm73qlxds3i/ViewGroup.h
ViewGroup.cpp:https ://www.dropbox.com/s/vxbqsh6ol430x4p/ViewGroup.cpp
更新 2:
问题是由方法声明中的一个愚蠢错误引起的。一个,被宣布为hitTest(int x, int y)
,另一个,hitTest(long x, long y)
。
它发生在“清理”和改进代码时。
但是,这很奇怪,因为它在我复制对象之前可以工作,而在复制之后,就不再...