首页 > 解决方案 > 显式调用 c++ 插入运算符 (>>) 的特定重载?

问题描述

所以我有以下三行代码困扰着我:

int choice;
std::cin >> choice;
platform = platforms[choice];

这感觉就像它应该是一个班轮,但我坚持如何实现它。

我在想类似的东西:

platform = platforms[(int)operator>>(std::cin)];

但显然不完全是因为编译器不会有它。

标签: c++

解决方案


你需要一个辅助函数来做到这一点。

感谢 lambda,您可以在一个表达式中做到这一点:

platform = platforms[([](){int choice; std::cin >> choice; return choice;}())];

推荐阅读