我有一个c++问题,请看下面的代码:
ArbitraryIterator *iter = (ArbitraryIterator *) state->iter;
ArbitraryCollection_Entry *result;
result = (ArbitraryCollection_Entry *) (*iter)();
我的问题在这个代码块的最后。我不确定最后一部分“(*iter)()”在做什么。这是一个函数调用,但我不确定它在调用什么?这是调用构造函数的另一种方式吗?我知道这可能是一个更普遍的问题,而不是具体到上面的代码示例中是如何实现的。对此有任何帮助或澄清,我们将不胜感激。
谢谢
最佳答案
(*iter)();
这是 2 个 Action :
- 取消引用
iter
(调用它是operator*
) - 在上一个操作的结果上调用
operator()
,不带参数
您的迭代器迭代可调用对象的集合,这种类型的一个例子是:
std::vector<std::function<void*()>>::iterator
关于c++调用没有点或this指针运算符的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24434921/