gpt4 book ai didi

c++ - 如何将 "convert"作业类转换为复杂的 C++ 类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:00 33 4
gpt4 key购买 nike

我有一个与 C++ 类匹配的 Java 类。 java 类名为 SDClass_JNI,C++ 类名为 SDClass。我将 Java 类作为 jobject 参数传递给我的 JNI 方法。在该 JNI 方法中,我想将在我的 JNI 方法中作为参数传入的 jobject 转换为“匹配的”C++ 方法。 (例如 SDClass_JNI -> SDCLass)。我该怎么做?

最佳答案

如果我理解正确,您需要从 java 类到相应的 c++ 类的隐式转换。

这是不可能的,您应该编写代码来处理编码过程。

类似于:

SNDClass toSND(JNIEnv *env, jobject obj) {

SNDClass result;

jclass cls = env->FindClass("com/.../SDClass_JNI");
checkException(env);
//TODO release jclass object (env->DeleteLocalRef(cls);)(maybe use some sort of scoped smart pointer )

jmethodID mid = env->GetMethodID(mCls, "getField1", "()D");
checkException(env);
jdouble value = env->CallDoubleMethod(obj, mid);
checkException(env);
result.setField1(jdouble);
.....
}

void checkException(JNIEnv *env)
{
jthrowable exc = env->ExceptionOccurred();
if (NULL == exc)
{
return;
}
//TODO decide how to handle
}

关于c++ - 如何将 "convert"作业类转换为复杂的 C++ 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623250/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com