c++ - 如何根据输入 C++ 更改返回类型?
问题描述
我将如何编写一个函数以根据输入返回不同的类型。我试过使用模板,但我不确定我是否理解我在做什么。如果输入是 int 我希望输出是字符串,反之亦然。
所以我尝试了这样的事情:
using namespace std;
template <class T>
T functionName(T s){
if(typeid(s).name() == 'i'){
return "int";
}
if(typeid(s).name() == 's'){
return 0;
}
}
不知道如何实现我在这里寻找的东西。任何指导将不胜感激。
解决方案
问题是唯一的返回类型必须在编译时确定;您不能有多个返回语句返回不相关的类型。
您可以使用constexpr if(C++17 起)。
如果值为
true
,则丢弃statement-false(如果存在),否则丢弃statement-true。废弃语句中的返回语句不参与函数返回类型推导
例如
template <class T>
auto functionName(T s){
if constexpr (std::is_same_v<T, int>) {
return std::string("int");
} else {
return 0;
}
}
推荐阅读
- javascript - 在javascript中访问字典中的键值的问题
- vue.js - 从 vuejs 日期选择器 vue-date-pick 中选择年份
- latex - 在latex/overleaf中,如何同时编译所有文件?
- r - R-闪亮应用
- c - 如何使用 printf 在终端中格式化分数输出
- java - How do I insert a row of data into JTable?
- postgresql - 将 csv 复制到 postgres 时出现“列中缺少数据”错误
- html - 使用 Angular、HTML、Typescript 从表单创建数组
- sql - 在不通知日期的情况下计算时差
- java - Spring TestRestTemplate 不设置标题