gpt4 book ai didi

c++ - 如何将成员函数传递给另一个函数?

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:04 25 4
gpt4 key购买 nike

我有一个函数

float addXPercent (float percent, ExampleClass* A, ExampleClass B, thisFunction) {
return (percent * B.thisFunction() + (*A).thisFunction());
}

someFunction是一个可以同时应用于 A 的函数和 B像这样

(*A).setSomething(0.4 * B.someFunction() + (*A).someFunction());

它需要一个 percent值像 0.4 , 将其应用于 B.someFunction() 的结果并将该值添加到 A.someFunction() 的当前值.

我想做的是将这部分功能概括出来:

0.4 * B.someFunction() + (*A).someFunction()

进入那个addXPercent功能。我期望的结果看起来像这样

(*A).setSomething( addXPercent (0.3, *A, B, thisFunction) );

我是 C++ 的新手,所以我进行了一些谷歌搜索,发现您可以使用 std header <functional> 将函数传递给不同的函数。 .

但我不确定如何使用像这样的语法传递成员函数 function< void () > thisFunction .

我应该怎么做?

我找不到相关的线程 1 2(得到 Sorry, there were no post results for “”),如果这是一个重复的问题,我很抱歉。

最佳答案

What I want to do is generalize this part of the function out

您可以使用 pointer to member function 来做到这一点:

float addXPercent (float percent, ExampleClass* A, ExampleClass B, float (ExampleClass::*someFunction)()) {
return (percent * (B.*someFunction)() + (A->*someFunction)());
}

您可以像这样调用 addXPercent:

ExampleClass a, b;

addXPercent(0.3f, &a, b, &ExampleClass::thisFunction);

关于c++ - 如何将成员函数传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com