【问题标题】:passing function with parameters to another function将带参数的函数传递给另一个函数
【发布时间】:2014-04-09 08:17:44
【问题描述】:

有没有办法将一个函数传递给另一个函数,这个传递的函数将在第二个函数内部调用,并在传递它时使用给定的参数。但是,传递的函数可以有不同的参数。

我不想使用来自调用函数内部的数据来运行该函数,只是我在调用执行实际调用的函数时传递的参数。基本上是定期检查,看看是否可以继续。

我正在尝试做的一个例子:

bool CheckSomething1 (int a, int b) { /* some code */ }
bool CheckSomething2 (int a, int b, int c) { /* some code */ }

bool WaitForTrue ( something funct something.. )
{
    while (! funct) {
        /* do some work */
    }   
}

int _tmain(int argc, _TCHAR* argv[])
{
    WaitForTrue(CheckSomething1(1, 2));

    WaitForTrue(CheckSomething2(1, 2, 3));

    return 0;
}

编辑:基本上我正在寻找一种方法将具有不同数量的参数的函数传递给另一个函数并运行它,但是每次传递它们时调用的参数都可能不同,但保持不变在传递给它的函数中也一样。

【问题讨论】:

  • 我想你可以找到一些灵感here。顺便说一句,你为什么要尝试这个?在WaitForTrue内部调用函数CheckSomething是不是更简单?
  • 听说过Function Pointer 吗?
  • 基本上我需要建立一个调用第三方 dll 中的函数的系统,但如果它们返回故障(串行总线 + 电机控制),我需要重试几次。所以我想要一个函数,我可以调用那些在返回失败之前重试几次的第 3 方函数。围绕每个调用构建重试代码可能会使我的代码大三倍且不可读。
  • 是的,使用函数指针,但基本上我想知道是否有一种方法可以传递函数而无需定义它的参数,只需在我将它传递给另一个时使用这些参数调用函数功能。参数传了以后就不用改了。

标签: function


【解决方案1】:

你要找的是std::bind

有关其工作原理的简短示例,请参见上面的链接。

您可以通过currying 实现这种控制风格(在函数式编程中已经很流行,参见CPS)的另一种方式,尽管用C++ 表达并不那么容易。

【讨论】:

  • 谢谢,这正是我想要的 :)
猜你喜欢
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2012-09-25
  • 2020-10-03
  • 2019-10-09
相关资源
最近更新 更多