2010-05-27 3 views
4
определить

У меня есть шаблон функции, и я хочу, чтобы вызвать его, используя определить в C++:функции шаблона в

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

Конечно, это не будет работать. Могу ли я сделать что-то вроде этого?

+0

Реальный вопрос, конечно, поэтому использовать макро ...? Кроме того, у вас будут проблемы, если какой-либо из ваших параметров нуждается в запятой: x –

ответ

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

+0

И могу ли я использовать значения по умолчанию в define? Например: #define CONFIG (key, type, def = "") ...? – Ockonal

+1

Нет - в этом случае вы хотите определить значение по умолчанию в самом шаблоне, если у вас есть контроль над кодом. – JohnMcG

Смежные вопросы