Java NDK/JNI-C++;虚拟继承实现 我刚刚开始使用Android NDK,我有一些问题要理解如何正确地实现C++类中的虚拟方法的继承。
我有以下课程:Java NDK/JNI-C++;虚拟继承实现 我刚刚开始使用Android NDK,我有一些问题要理解如何正确地实现C++类中的虚拟方法的继承。,java,android,c++,android-ndk,java-native-interface,Java,Android,C++,Android Ndk,Java Native Interface,我有以下课程: IA类 { 公众: 虚拟void foo()=0; } IB类: 公共虚拟IA { 公众: 虚拟空心条()=0; } A类: 公共IA { 公众: void foo(); } B类: 公共A, 公共IB { 空心钢筋(); } 以及等效的Java类: 公共类A扩展指针 { 公共本地void foo(); } 公共类B扩展了A { 公共本机void bar(); } 但我发现以下编译器错误: 注意:“B”中未实现的纯虚拟方法“foo” 虚拟void foo()=0; 错误:正在
IA类
{
公众:
虚拟void foo()=0;
}
IB类:
公共虚拟IA
{
公众:
虚拟空心条()=0;
}
A类:
公共IA
{
公众:
void foo();
}
B类:
公共A,
公共IB
{
空心钢筋();
}
以及等效的Java类:
公共类A扩展指针
{
公共本地void foo();
}
公共类B扩展了A
{
公共本机void bar();
}
但我发现以下编译器错误:
注意:“B”中未实现的纯虚拟方法“foo”
虚拟void foo()=0;
错误:正在分配抽象类类型为“B”的对象
返回新的B();
如果我在B
中重写foo()
,则问题似乎已得到解决,即:
B类:
公共A,
公共IB
{
空心钢筋();
//从
void foo();
}
void B::foo()
{
A::foo();
}
公共类B扩展了
{
公共本机void bar();
@凌驾
公共本地void foo();
}
然而,我不明白为什么这是必要的。如果有人能帮我理解这一点,我将不胜感激。感谢@Michael,这解决了问题!