我正在阅读一些由我认为比我自己更好的程序员设计和编写的 C++ 代码。我遇到了这一行:
rawReceive.Signal()()(*this, completedData);
三组括号是什么意思?我做了一个小测试程序,但不能编译。有什么我不明白的技巧,还是这是胡言乱语?
谢谢。
答案 0 :(得分:2)
这些谜团一步步解开:
rawReceive.Signal()
这会调用任何 Signal()
的 rawReceive
方法。
()
Signal()
必须返回一些未指定的可调用对象。即:一个本身实现 operator()
重载的对象。也许它是一个 std::function
。 operator()
重载被调用。它不需要参数。
(*this, completedData);
第一个 operator()
重载返回另一个可调用对象。这个 operator()
有两个参数,它们是这样提供的。
您将不得不查看它来自的程序,以确定这些函数中的每一个调用的实际对象,一步一步。只需跟随面包屑即可。