gpt4 book ai didi

c++ - 如何在 C++ 中引用函数(转换 python 代码)

转载 作者:行者123 更新时间:2023-11-30 02:59:21 24 4
gpt4 key购买 nike

在 python 中,我可以将对函数的引用传递给类,然后稍后再次使用它使用所需的参数调用类变量。如下:

def add_together(a, b):
return a + b

class Function:
def __init__(self,action,name,num_inputs=2,num_outputs=1):
self.action = action
self.num_inputs = num_inputs
self.num_outputs = num_outputs
self.name = name
self.f_type = True

def solve(self,*args):
return self.action(*args)

f = Function(add_together,"'add'")
print f.action(3,5)

我正在将代码移动到 C++ 以提高速度,但对 C++ 了解不多,我在寻找如何实现相同目标时遇到了一些麻烦。请参阅下面的(弱)尝试。我希望尽可能保持逻辑相似。

我想知道两件事,

  1. 如何将对函数的引用传递到类中?
  2. 我相信 C++ 中的 *args 可以通过重载工作,但我不确定如何加载和卸载变量。

我知道一些基本问题,但我很难通过 Google 解决。

尝试使用 C++

double add_together(double a, double b) {
return a + b;
}

class Function {
public:
Function(int ni, double act) {
int num_inputs = ni;
double action = act;


}
protected:
int num_inputs;
double action;
};

Function f(2,add_together);

最佳答案

函数指针似乎就是您要查找的内容。开头的 typedef 不是必需的,但它确实简化了语法。

typedef double (*function_ptr)(double, double);

double add_together(double a, double b) {
return a + b;
}

class Function {
public:
Function(int ni, function_ptr act) {
num_inputs = ni;
action = act;
}
protected:
int num_inputs;
function_ptr action;
};

Function f(2,add_together);

你的构造函数也有错误。您将成员变量 num_inputsaction 重新定义为构造函数中的局部变量。我认为你不想那样做。

关于c++ - 如何在 C++ 中引用函数(转换 python 代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955972/

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