调用没有名称的方法

时间:2019-06-24 13:06:09

标签: c++

我有这行代码,需要能够使用我正在编写的代码运行:

 euro(2, Regular)

euro是来自名为MainControl的类的对象,并且我定义了一个枚举:

enum VoterType { All, Regular, Judge };

我基本上了解到我们想使用名为MainControl的类中的某些方法,但是我没有看到应该使用的方法的名称?

鉴于此函数返回void的事实,该声明在类MainControl中的外观应该是什么样?

1 个答案:

答案 0 :(得分:4)

MainControl类正在实现自定义overloaded operator,即“函数调用运算符”

  

该声明在MainControl类中应该看起来如何?

方法签名应类似于:

class MainControl {
  // ...
 public:
  void operator()(int, VoterType);
};

  

当用户定义的类重载函数调用运算符operator()时,它将变为FunctionObject类型。

简而言之,您的类实例(euro)是 FunctionObject ,并且该特定方法可以简单地调用为例如:

euro(2, VoterType::Regular)

附加说明

仅出于完整性考虑,“操作员方法”就像另一种方法(此处没有“黑魔法”)。

实际上,您甚至可以使用全名来调用它:

euro.operator()(2, VoterType::Regular);

但是语法变得很丑。