C++ 返回函数的类型,作为其输入的函数
c++ return type of function to be a function of it's input
我正在学习c++,我想知道是否有一种方法来定义一个模板,其中返回类型实际上是函数输入的函数。
例如:calling fun(1) would return me an int
calling fun(2) would return me a float
我想这可以用某种地图来完成?
1 <> int
2 <> float
我试图解决的问题是,例如,如果我有一个名为room的对象,我想要有一个名为get_contents的函数,我将在其上传递一个enum来定义返回类型。例如:
std::vector<Table> tables = room.get_contents(Room::TABLE);
std::vector<Chair> chairs = room.get_contents(Room::CHAIR);
第一个问题可能不是这个问题的最佳解决方案,尽管如此,我想知道它是否可能。还有,什么是最好的模式来做我想要的?
在我看来,room.get
只需要成为一个模板,而忘记枚举。
std::vector<Table> tables = room.get<Table>();`
语言不允许你这样做。
考虑一下,函数的输入可以是一个变量,其值在编译时是未知的。编译器将无法推断返回类型。
你能做的:
- 使用两个不同的函数并调用相应的函数
- 有一个共同的返回类型,例如基类指针或引用。
你可以为函数使用模板,但是你必须显式地将类型作为模板参数传递,它总是必须在编译时知道,不能从输入中自动推断:
template <typename T>
T product(T x, T y) { x * y; }
命名为:
product<int>(3,2);
(抽象示例,可能在您正在做的事情中不太有用)
相关文章:
- 如果我更改函数输入,我的递归不起作用?
- 初始化与函数输入相关的全局数组
- 如何生成比用户使用 rand() 函数输入的数字大 5-10% 的数字?
- 将函数更改为具有设置函数输入变量的方法的类
- 如何避免将 const 和非 const 成员函数输入到模板中的代码重复
- 是否有一种方法可以避免标头文件中使用的constexpr函数输入全局范围,而无需额外的名称空间
- 迭代器作为C 中的函数输入
- 如何为作为雇员类的指针传入的构造函数输入数据
- 最小的函数输入和输出错误
- C++ 函数输入错误
- QComboBox 作为 QT 中的函数输入参数
- 函数输入之前的分割故障
- 如何在视觉工作室 2012年设置函数输入参数的颜色
- 函数输入变化
- 使用函数输入 1 个 int 和 1 个字符串数组并循环
- 将数组用于函数输入参数
- 如何在c++中将函数输入强制转换为智能指针
- 自定义检查器的覆盖率引用函数输入
- 为什么我不能使用两个scanf函数输入字母
- 犰狳cov函数输入