我创建了一些接受像这样的对数组的函数:
void test(std::pair<std::string,bool> v[],int size){
//I need to use lambda so copy content to local variable first
std::vector<std::pair<std::string,bool> > v_cp(v,v+size);
//some lambda
}
然后调用它:
test((std::pair<std::string,bool>[]){std::make_pair("idle",true)},1);
代码可以在Xcode中编译,但不能在android ndk中编译:
error: taking address of temporary array
test((std::pair<std::string,bool>[]){std::make_pair("idle",true)},1);
^
是否有编译标志可以解决问题而无需更改代码?还是有其他语法来解决这个问题?
答案 0 :(得分:0)
您正在使用C样式的开放数组,您可以像这样初始化:
std::pair<std::string, bool> arr[] = { std::make_pair("idle", true) };
test(arr, 1);
我想你必须有理由在你的函数参数中有一个C风格的开放数组,否则vector会更好地传递任意数量的数组元素。