2010-08-07 68 views
1

如何使用C++模板作爲參數到一個objective-c方法? 基本上我想要做這樣的事情:使用C++模板參數到一個客觀c方法

template<typename T> 
- (void)method:(T)arg 

,但不起作用。根據this文件這是可能的,但它沒有提供任何示例。有沒有人知道如何做到這一點?

+1

只是檢查,你使用.mm而不是.m,對吧? – 2010-08-07 06:24:50

回答

4

不,你不能那樣做。

Objective-C類,協議,和類別不能在C++模板中被聲明,也不可以在C++模板被一個Objective-C接口,協議,或類別的範圍內聲明。

即使是可以聲明該模板,它是無用的作爲目標C的方法不能按類型被重載。

+0

啊。這是壞的...... :( – 2010-08-07 06:37:22

1

當文檔說「C++模板參數也可以用作接收器或參數(雖然不是選擇器)在Objective-C消息表達式」,這意味着,可以呼叫一個Objective-C方法從在模板化的C++類或函數中,而不是實際上可以製作模板化的Objective-C方法。

例如:

template<typename T> 
void f(id obj, T t) { 
    [obj doSomethingWithObject:t]; 
} 

...應該工作(雖然我沒有測試過)。當然,調用f時使用的類型必須是可以有效地作爲參數傳遞給doSomethingWithObject:的類型,否則調用代碼將無法編譯。

相關問題