Android — Java Jni и переполнение стека

Я нахожусь в процессе изучения того, как работает JNI для вызова объектных методов C ++ из Java-программы. Я работаю с Android NDK / SDK, чтобы написать приложение.
Я новичок в JNI, и я хотел бы знать, поддерживается ли полиморфизм. То есть, предположим, у меня есть простой класс C ++:

class HeyBoy
{
public:
virtual int    getValue()
{
return 10;
}
};

class HeyBoyDerived1 : public HeyBoy
{
public:
int    getValue()
{
return 20;
}
}

class HeyBoyDerived2 : public HeyBoy
{
public:
int    getValue()
{
return 30;
}
}

Во время выполнения я хочу, чтобы пользователь выбирал, какую реализацию использовать (1 или 2), просто нажав кнопку на интерфейсе приложения. Нужный объект C ++ должен быть создан.
Затем я бы поместил кнопку с надписью «Получить значение». Когда кнопка нажата, getValue() метод текущей выбранной реализации должен быть вызван. После этого результат выводится на экран телефона.
Мне бы очень хотелось увидеть примеры кода!
Спасибо.

0

Решение

Краткий ответ: нет. JNI — это интерфейс C, он не знает C ++, классов, наследования или полиморфизма.

Более длинный ответ: да, функции C могут использоваться для вызова необходимых конструкторов и вызова виртуальных методов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]