Как динамически выбрать в C / C ++ тип для приведения? - PullRequest
0 голосов
/ 26 июня 2019

Есть ли способ сделать

if(...)
  return (char)value;

return (unsigned char)value;

, переместив чек в актерский состав, чтобы получить что-то вроде

return (???)value;

Цель состоит в том, чтобы интерпретировать содержимое значения по-разному, например:(символ без знака) 144 => 144 и (символ) 144 => - 112

1 Ответ

2 голосов
/ 26 июня 2019

Нет, и в C, и в C ++ возвращаемый тип функции фиксирован, то есть он всегда будет возвращать один и тот же тип.Даже если вы попытаетесь привести как часть оператора return, возвращаемое значение будет неявно преобразовано в возвращаемый тип функции - если это возможно.Если неявное преобразование невозможно, вы получите ошибку компиляции.

Так что

returntype foo(...) {.... return x;}

всегда будет возвращать значение типа returntype

InC ++ вы можете использовать шаблоны, чтобы «изменить» тип возвращаемого значения, но как только определение шаблона будет решено, это та же самая история.Приведение не изменит реальный тип возврата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...