【发布时间】:2019-11-26 07:56:44
【问题描述】:
我将如何编写一个函数以根据输入返回不同的类型。我试过使用模板,但我不确定我是否理解我在做什么。如果输入是 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;
}
}
不知道如何实现我在这里寻找的东西。任何指导将不胜感激。
【问题讨论】:
-
你打算以后如何使用该功能?意思是即使 C++ 语法允许定义这样的函数,如果你有 int a = functionName(s) 并且函数返回一个字符串会发生什么? C++ 是一种强类型语言,因此这种结构实际上是不可能的。您必须通过使用不同的返回类型多次编写函数来显式避免它,并在输入暗示返回错误类型时处理错误情况。您可以做的另一件事是返回一个结构或只返回一个 std::pair
并且只填充两者之一。 -
在这种情况下你不能只使用 auto a = functionName(s) 吗?
标签: c++ templates type-conversion