如何使用C++模板作爲參數到一個objective-c方法? 基本上我想要做這樣的事情:使用C++模板參數到一個客觀c方法
template<typename T>
- (void)method:(T)arg
,但不起作用。根據this文件這是可能的,但它沒有提供任何示例。有沒有人知道如何做到這一點?
如何使用C++模板作爲參數到一個objective-c方法? 基本上我想要做這樣的事情:使用C++模板參數到一個客觀c方法
template<typename T>
- (void)method:(T)arg
,但不起作用。根據this文件這是可能的,但它沒有提供任何示例。有沒有人知道如何做到這一點?
不,你不能那樣做。
Objective-C類,協議,和類別不能在C++模板中被聲明,也不可以在C++模板被一個Objective-C接口,協議,或類別的範圍內聲明。
即使是可以聲明該模板,它是無用的作爲目標C的方法不能按類型被重載。
啊。這是壞的...... :( – 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