使用C++模板参数到一个客观c方法
问题描述:
如何使用C++模板作为参数到一个objective-c方法? 基本上我想要做这样的事情:使用C++模板参数到一个客观c方法
template<typename T>
- (void)method:(T)arg
,但不起作用。根据this文件这是可能的,但它没有提供任何示例。有没有人知道如何做到这一点?
答
不,你不能那样做。
Objective-C类,协议,和类别不能在C++模板中被声明,也不可以在C++模板被一个Objective-C接口,协议,或类别的范围内声明。
即使是可以声明该模板,它是无用的作为目标C的方法不能按类型被重载。
+0
啊。这是坏的...... :( – 2010-08-07 06:37:22
答
当文档说“C++模板参数也可以用作接收器或参数(虽然不是选择器)在Objective-C消息表达式”,这意味着,可以呼叫一个Objective-C方法从在模板化的C++类或函数中,而不是实际上可以制作模板化的Objective-C方法。
例如:
template<typename T>
void f(id obj, T t) {
[obj doSomethingWithObject:t];
}
...应该工作(虽然我没有测试过)。当然,调用f
时使用的类型必须是可以有效地作为参数传递给doSomethingWithObject:
的类型,否则调用代码将无法编译。
只是检查,你使用.mm而不是.m,对吧? – 2010-08-07 06:24:50