我正在使用枚举模式在我的应用程序中定义一个单例。我需要访问这个单例的方法,但我似乎无法正确传递单例。
我已经尝试通过枚举并创建一个作为 globalRef 的作业对象,如下所示:
class FrameElapsedListener : public gkEngine::Listener{
public:
JNIEnv* env;
jobject entityManager;
FrameElapsedListener(JNIEnv* env, jobject entityManager) :
env(env),
entityManager(env->NewGlobalRef(entityManager)){}
~FrameElapsedListener(){
env->DeleteGlobalRef(entityManager);
}
void tick(gkScalar rate);
};
但是我在使用它时崩溃了,“本地参考”超出了这样的范围:
jclass entityManagerClass = env->FindClass(entityManagerClassPath.c_str());
jmethodID entityManagerFrameElapsedMethodId = env->GetMethodID(entityManagerClass, "frameElapsed", "(F)V");
env->CallVoidMethod(entityManager, entityManagerFrameElapsedMethodId, rate); //crashes here
现在我试图将单例从枚举中取出,但我不确定如何获取这样的枚举值。有什么建议吗?