Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NDK/JNI-C++;虚拟继承实现 我刚刚开始使用Android NDK,我有一些问题要理解如何正确地实现C++类中的虚拟方法的继承。_Java_Android_C++_Android Ndk_Java Native Interface - Fatal编程技术网

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,这解决了问题!