首页 > 解决方案 > 如何根据输入 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;
    }

}

不知道如何实现我在这里寻找的东西。任何指导将不胜感激。

标签: c++templatestype-conversion

解决方案


问题是唯一的返回类型必须在编译时确定;您不能有多个返回语句返回不相关的类型。

您可以使用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;
    }

}

推荐阅读