繁体   English   中英

使用C ++模板作为Objective-C方法的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM