2010-05-27 79 views
4

我有一些模板功能,我想打電話給它使用C++定義:模板函數定義

#define CONFIG(key, type, def) getValue<type>(key, def); 

當然,它不會工作。我能做出這樣的事嗎?

+0

真正的問題,當然,這就是爲什麼使用宏...?此外,如果您的任何參數需要逗號,則會遇到問題:x – 2010-05-28 08:02:53

回答

2

它工作正常:

template<typename T> 
T getValue(int, int) { return T(); } 

#define CONFIG(key, type, def) getValue<type>(key, def); 


int main() 
{ 
    CONFIG(1, int, 2); 
    return 0; 
} 
+0

我將字符串傳遞爲字符串:D好的,謝謝。 – Ockonal 2010-05-27 20:38:32

+0

我可以在定義中使用默認值嗎?像:#define CONFIG(key,type,def =「」)...? – Ockonal 2010-05-27 20:40:08

+1

否 - 在這種情況下,假設您擁有對代碼的控制權,您可以在模板本身中定義默認值。 – JohnMcG 2010-05-27 20:42:16