[英]Using c++ template an argument to an objective-c method
如何使用C ++模板作为Objective-C方法的参数? 本质上我想做这样的事情:
template<typename T>
- (void)method:(T)arg
但这不起作用。 根据本文档,这是可能的,但是未提供任何示例。 有人知道怎么做吗?
不,你不能那样做。
无法在C ++模板中声明Objective-C的类,协议和类别, 也不能在Objective-C接口,协议或类别的范围内声明C ++模板。
即使可以声明该模板,它也无济于事,因为无法按类型重载Objective-C方法。
当文档说“ C ++模板参数也可以用作Objective-C消息表达式中的接收器或参数(尽管不能用作选择器) ”时,意味着您可以从模板化的C ++类或函数中调用Objective-C方法 ,不是您实际上可以制作模板化的Objective-C方法。
例如:
template<typename T>
void f(id obj, T t) {
[obj doSomethingWithObject:t];
}
...应该可以工作(尽管我还没有测试过)。 当然,调用f
时使用的类型必须是可以有效地作为参数传递给doSomethingWithObject:
,否则调用代码将无法编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.