c++ - 调用没有名字的方法
问题描述
我有这一行,我需要能够使用我正在编写的代码运行:
euro(2, Regular)
euro
是一个名为 的类的对象MainControl
,我定义了一个枚举:
enum VoterType { All, Regular, Judge };
基本上我知道我们想使用名为的类中的一些方法MainControl
,但我没有看到应该使用的方法的名称?
考虑到这个函数返回的事实,void
声明在类中应该是什么样子MainControl
?
解决方案
MainControl
类正在实现一个自定义的重载运算符,即“函数调用运算符”。
MainControl 类中的声明应该是什么样子的?
方法签名应该类似于:
class MainControl {
// ...
public:
void operator()(int, VoterType);
};
当用户定义的类重载函数调用运算符 operator() 时,它就变成了 FunctionObject 类型。
简而言之,您的类实例 ( euro
) 是一个FunctionObject并且可以简单地调用该特定方法(例如):
euro(2, VoterType::Regular)
补充说明
只是为了完整起见,“运算符方法”就像另一种方法(这里没有黑魔法)。
实际上,您甚至可以使用完整名称调用它:
euro.operator()(2, VoterType::Regular);
但是语法变得非常难看。
推荐阅读
- bash - grep 命令提取 kubernetes pod 名称
- mongodb - 如何在 MongoDB 的聚合查询中将数组转换为没有键的对象?
- ios - 如果 iOS 版本 12 或更早版本未实施 Sign In with Apple,Apple 审核团队是否会批准该应用程序?
- swift - 如何根据单元格大小设置集合视图高度?
- oracle - 根据顺序将多个 oracle 表分组到一个表中
- excel - 在 VBA for Excel 中,为什么在复制和粘贴来自另一个工作表的信息时使用 activecell 和 activesheet?
- laravel - 双链接 laravel 表
- matplotlib - Seaborn 信息重叠轴
- python - 使用python登录wifi
- c - 如何在 Windows 上以编程方式执行 ping 测试?