我可以添加自己的类型转换操作符,以便能够将c++对象转换为objective C吗?

Can I add my own type conversion operators to be able to convert C++ object to objective C?

本文关键字:转换 对象 c++ objective 类型转换 自己的 添加 操作符 我可以      更新时间:2023-10-16

我有一个c++的整数向量,我需要把它变成一个objective C NSArray。一种方法是循环遍历所有元素,取每个int并复制到NSArray,这可以用一个函数来完成但有没有办法为NSArray写一个运算符/构造器它接受std::vector作为参数并生成一个数组,换句话说,我可以扩展NSArray类吗?

你可以在NSArray上做一个category:

NSArray + vector.h:

#include <vector>
@interface NSArray (vector)
-(id)initWithVector:(std::vector<int>)v1;
@end

NSArray + vector.m:

#import "NSArray+vector.h"
@implementation NSArray (vector)
-(id)initWithVector:(std::vector<int>)v1{
    NSMutableArray *array = [[NSMutableArray alloc] init];
    for(int i =0; i < v1.size(); i++){
        [array addObject:[NSNumber numberWithInt:v1.at(i)]];
    }
    return [array copy];
}
@end

我没有调试它,但它应该可以工作