Object.Function()()(param,param) 是什么意思?

时间:2021-07-25 20:44:00

标签: c++

我正在阅读一些由我认为比我自己更好的程序员设计和编写的 C++ 代码。我遇到了这一行:

rawReceive.Signal()()(*this, completedData);

三组括号是什么意思?我做了一个小测试程序,但不能编译。有什么我不明白的技巧,还是这是胡言乱语?

谢谢。

1 个答案:

答案 0 :(得分:2)

这些谜团一步步解开:

rawReceive.Signal()

这会调用任何 Signal()rawReceive 方法。

                   ()

Signal() 必须返回一些未指定的可调用对象。即:一个本身实现 operator() 重载的对象。也许它是一个 std::functionoperator() 重载被调用。它不需要参数。

                     (*this, completedData);

第一个 operator() 重载返回另一个可调用对象。这个 operator() 有两个参数,它们是这样提供的。

您将不得不查看它来自的程序,以确定这些函数中的每一个调用的实际对象,一步一步。只需跟随面包屑即可。