gpt4 book ai didi

c++ - 引用成员函数

转载 作者:行者123 更新时间:2023-11-28 07:19:46 25 4
gpt4 key购买 nike

首先我知道这在 C++ 中是不可能的。但我希望有人能告诉我解决我的问题的方法。我有一个代表数学函数的类:

class myClass:
{
private:
public:
myClass() {};
double value(double, double){ /* doing some complicated calculation here */} };
double integrate { /*calc*/ return integral; };
}

integrate() 中,我想创建一个引用 value() 的结构。该结构定义如下:

struct gsl_monte_function_struct {
double (*f)(double * x_array, size_t dim, void * params);
size_t dim;
void * params;
};

(我需要这个结构来从 GSL 调用蒙特卡洛积分例程)

如前所述,我知道这在 C++ 中是被禁止的。但是是否有可能将 gsl_monte_function_struct 与 myClass 的成员函数一起使用?如果 myClass 无法集成自身,是否可以从类外部调用 gsl_monte_function_struct 并以 value() 作为引用?提前致谢!

最佳答案

如果正确理解,您需要一个指向myClass 成员函数的指针。您可以通过将成员函数指针声明为:

double (myClass::*value)(double,double) 

此函数稍后可以在实例上调用为:

(instance.*value)(x,y);

或者,您可以使用 std::bind 创建一个函数对象,它可以作为普通函数调用,而无需在调用 之后跟踪调用它的实例>std::bind:

auto& value = std::bind(myClass::value, instance);
// ....
value(x,y);

关于c++ - 引用成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679849/

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