我需要调用像
这样的cpp函数void myFunc(float **array2D, int rows, int cols)
{
}
在objective-c对象中。基本上,当我创建NSArray对象时,数组是在我的objective-c代码中创建的。现在,问题是如何将此数组传递给我的cpp函数。
我对这些混合c ++ / objective-c的东西有点新,所以任何提示都会受到高度赞赏。
由于
答案 0 :(得分:6)
我猜你必须将NSArray
转换为普通的C数组。
类似的东西:
NSArray *myNSArray; // your NSArray
int count = [myNSArray count];
float *array = new float[count];
for(int i=0; i<count; i++) {
array[i] = [[myNSArray objectAtIndex:i] floatValue];
}
或者,作为评论者建议(假设您的NSArray
包含NSNumber
s):
NSArray *myNSArray; // your NSArray
int count = [myNSArray count];
float *array = new float[count];
int i = 0;
for(NSNumber *number in myNSArray) {
array[i++] = [number floatValue];
}
答案 1 :(得分:2)
看看这个post。
查看使用[NSArray getObjects]创建c样式数组的答案。
以下是poster放入的代码:
NSArray *someArray = /* .... */;
NSRange copyRange = NSMakeRange(0, [someArray count]);
id *cArray = malloc(sizeof(id *) * copyRange.length);
[someArray getObjects:cArray range:copyRange];
/* use cArray somewhere */
free(cArray);
答案 2 :(得分:0)
或者,由于CFArray是免费桥接到NSArray,你可以从你的C ++函数调用那些C函数吗?我会环顾四周,如果没有C ++包装器来提供类似的语义,或者可以很容易地编写一个,那就不会感到惊讶。