我刚刚开始使用Android NDK,我遇到了一些问题,了解如何在C ++类中正确实现虚方法的继承。
我有以下课程:
class IA
{
public:
virtual void foo() = 0;
}
class IB :
public virtual IA
{
public:
virtual void bar() = 0;
}
class A :
public IA
{
public:
void foo();
}
class B :
public A,
public IB
{
void bar();
}
等效的Java类:
public class A extends Pointer
{
public native void foo();
}
public class B extends A
{
public native void bar();
}
但是我得到以下编译器错误:
note: unimplemented pure virtual method 'foo' in 'B'
virtual void foo() = 0;
error: allocating an object of abstract class type 'B'
return new B();
如果我在foo()
中覆盖B
,问题似乎已得到解决,即:
class B :
public A,
public IB
{
void bar();
// Overridden from A
void foo();
}
void B::foo()
{
A::foo();
}
public class B extends A
{
public native void bar();
@Override
public native void foo();
}
然而我无法理解为什么这是必要的。如果有人能帮助我理解这一点,我将不胜感激。