首页 > 解决方案 > 如何在 C/C++ 中动态选择要转换的类型?

问题描述

有没有办法

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

return (unsigned char)value;

通过将支票移入演员阵容以获得类似的东西

return (???)value;

目标是以不同的方式解释 value 的内容,例如: (unsigned char)144=>144 和 (char)144=>-112

标签: c++ccasting

解决方案


不,在 C 和 C++ 中,函数的返回类型是固定的,即它总是返回相同的类型。即使您尝试强制return转换为语句的一部分,返回的值也会隐式转换为函数的返回类型 - 如果可能的话。如果无法进行隐式转换,则会出现编译错误。

所以

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

将始终返回一个类型的值returntype

在 C++ 中,您可以使用模板来“更改”返回类型,但一旦解决了模板定义,情况就是如此。Cast 不会改变真正的返回类型。


推荐阅读