gpt4 book ai didi

android - 使用Android原生代码创建arraylist

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:44 26 4
gpt4 key购买 nike

如果这是一个重复的问题,请告诉我,不要投反对票,我是 Android 原生开发的新手。我想使用 Android 原生代码创建一个 ArrayList,我尝试了以下操作:

#include <jni.h>
#include <android/log.h>
#include <vector>

template<class T>

extern "C"{ //here it is showing **error expected unqualified-id before string constant**

std::vector<T> list;

JNIEXPORT void JNICALL Java_com_example_nativetestapp_NativeList_add(
JNIEnv * env, jobject obj, T t) {
list.push_back(t);
}

JNIEXPORT jboolean JNICALL Java_com_example_nativetestapp_NativeList_remove(
JNIEnv * env, jobject obj, int pos) {
if (pos > list.size() - 1 || pos < 0)
return false;
return list.erase(list.begin() + pos) != NULL ? true : false;
}

JNIEXPORT jint JNICALL Java_com_example_nativetestapp_NativeList_size(
JNIEnv * env, jobject obj) {
return list.size() == NULL ? 0 : list.size();
}

JNIEXPORT jint JNICALL Java_com_example_nativetestapp_NativeList_get(
JNIEnv * env, jobject obj, int pos) {
return list[pos];
}

JNIEXPORT jboolean JNICALL Java_com_example_nativetestapp_NativeList_contains(
JNIEnv * env, jobject obj, T t) {
for (int var = 0; var < list.size(); var++) {
if(t==list[var])
return true;
}
return false;
}

JNIEXPORT jboolean JNICALL Java_com_example_nativetestapp_NativeList_remove(
JNIEnv * env, jobject obj, T t) {
for (int var = 0; var < list.size(); var++) {
if(t==list[var]){
list.erase(list.begin()+var);
return true;
}
}
return false;
}
};

但是我被代码中提到的错误困住了。如果我在

之后放置一个分号
template<class T>;

然后在这一行之后我得到一个新的错误:

cannot resolve T symbol.

最佳答案

在每个JNIEXPORT之前添加extern "C",而不是包装所有代码。

关于android - 使用Android原生代码创建arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658835/

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