Как я могу создать экземпляр типа в шаблонной функции?(C ++) - PullRequest
0 голосов
/ 12 ноября 2010

Мне нужна функция шаблона, которая присваивает значение по умолчанию переданному аргументу

template <class T> inline T GetDefault()
{
    return ???? # default value
}

T Cand be bool, int, double и string.

Спасибо.

Ответы [ 3 ]

8 голосов
/ 12 ноября 2010

Значение по умолчанию (даже с базовыми типами) должно быть «конструктором» по умолчанию:

template <class T> inline void SetDefault( T& value )
{
    value = T();
}

Например, int-типы будут по умолчанию 0 (потому что явно инициализированы).

Это, очевидно, не будет работать с типами без значения по умолчанию, например с объектами класса, которые не имеют конструктора по умолчанию.

7 голосов
/ 12 ноября 2010

Вы можете использовать return T();

Обратите внимание, что это также может быть использовано для присвоения параметру типа шаблона значения по умолчанию:

template<class T>
void foo(const T &t, const T &tWithDefaultValue = T())
{
  /* ... */
}
5 голосов
/ 12 ноября 2010
template <class T> inline T GetDefault() 
{ 
    return T();
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...