Приведение символов в Int в функции шаблона - PullRequest
0 голосов
/ 19 марта 2012

У меня есть шаблонная функция C ++, которая печатает числа.

Работает нормально для всех, кроме случаев, когда я работаю с данными типа char.

Я бы хотел, чтобы char было напечатано как int, но если я приведу это явным образом в функции шаблона, то я потеряю точность на моих float типах.

Я бы хотел сказать:

template<class T> bob(T a){
  cout<<if_char_make_int(a)<<endl;
}

Но я не уверен, как это сделать, или если это возможно.

Есть мысли?

Ответы [ 2 ]

4 голосов
/ 19 марта 2012
template<class T> void bob(T a){
  cout<< a <<endl;
}

template<> void bob(char a){
  cout<< static_cast<int>(a) <<endl;
}

Подробнее читайте здесь http://www.cplusplus.com/doc/tutorial/templates/ (специализация шаблона)

Надеюсь, это поможет

2 голосов
/ 19 марта 2012
template<class T> void bob(T a){
    std::cout
      << typename boost::mpl::if_<boost::is_same<char, T>, int, T>::type(a)
      << std::endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...