Questions tagged «function-pointers»

函数指针是指向函数的指针,可以将其存储在变量中。它允许在运行时选择要运行的功能。




8
“解包”一个元组以调用匹配的函数指针
我正在尝试存储std::tuple各种数量的值,这些值稍后将用作与存储类型匹配的函数指针的调用的参数。 我创建了一个简化的示例,显示了我正在努力解决的问题: #include <iostream> #include <tuple> void f(int a, double b, void* c) { std::cout << a << ":" << b << ":" << c << std::endl; } template <typename ...Args> struct save_it_for_later { std::tuple<Args...> params; void (*func)(Args...); void delayed_dispatch() { // How can I "unpack" params to call func? …

7
了解C语言中函数指针的typedef
当我阅读其他人的代码时,总是感到有些困惑,因为他们的代码带有用于带参数的函数的指针的typedef。我记得,花了一段时间才尝试理解这样的定义,同时又试图理解用C语言编写的数字算法。那么,您能否就如何为函数指针(“做”和“不做”)编写好的typedef共享您的提示和想法,以及它们为什么有用以及如何理解他人的工作?谢谢!

3
为什么函数指针定义可以使用任意数量的“&”或星号“ *”?
为什么要进行以下工作? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo; (*p1_foo)(); (*p2_foo)(); (*p3_foo)(); (*p4_foo)(); (*p5_foo)(); (*p6_foo)(); (*p7_foo)(); }
216 c++  c  function-pointers 

8
将捕获lambda作为函数指针传递
是否可以将lambda函数作为函数指针传递?如果是这样,我肯定做错了什么,因为我遇到了编译错误。 考虑以下示例 using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ return x > 3; } }; return 0; } 当我尝试对此进行编译时,出现以下编译错误: In function 'int main()': 17:31: error: the value of 'x' is …

13
C并不那么难:void(*(* f [])())()
我今天刚看一张照片,并认为我会感谢您的解释。所以这是图片: 我感到困惑,并想知道这样的代码是否可行。我用图片搜索了一下,然后在此 reddit条目中找到了另一张图片,这是该图片: 因此,这种“螺旋式阅读”是否有效?这是C编译器解析的方式吗? 如果对这个怪异的代码有更简单的解释,那就太好了。 除此以外,这类代码是否有用?如果是这样,何时何地? 关于“螺旋规则” 存在一个问题,但我不仅在询问它的应用方式或如何使用该规则读取表达式。我也质疑这种表达方式的使用以及螺旋规则的有效性。关于这些,已经发布了一些不错的答案。

17
Java中的回调函数
有没有办法在Java方法中传递回调函数? 我试图模仿的行为是传递给函数的.Net委托。 我见过有人建议创建一个单独的对象,但这似乎过于矫kill过正,但是我知道有时候矫kill过正是做事的唯一方法。

6
在类中使用具有成员函数的通用std :: function对象
对于一个类,我想在一个map存储std::function对象中存储一些指向同一类成员函数的函数指针。但是我在使用此代码的开头就失败了: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; 我收到error C2064: term does not evaluate to a function taking 0 arguments的xxcallobj一些奇怪的模板实例化的错误结合。目前,我在使用Visual Studio 2010/2011的Windows 8上以及在VS10的Win 7上也失败。该错误必须基于一些我不遵循的奇怪C ++规则



11
Java中的函数指针
这可能是常见且琐碎的事情,但我似乎很难找到具体答案。在C#中,有一个委托的概念,它与C ++中的函数指针紧密相关。Java中是否有类似的功能?鉴于缺少指针,最好的方法是什么?需要明确的是,我们在这里谈论头等舱。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.