如何制作指针来调用我的成员函数
How to make a pointer to call my member function?
我有一个成员函数"myfunction"和"my constraint1",如下所示。
//f= k1(x1-a1)^2 + k2(x2-a2)^2 + k3(x3-a3)^2
double CNonlinearOptimization::myfunction(unsigned n, const double *x, double *grad, void *pdata) {
if (grad) {
grad[0] = 2*k1*(x[0]-1);
grad[1] = 2*k2*(x[1]-3);
grad[2] = 2*k3*(x[2]-5);
}
return (k1*(x[0]-1)*(x[0]-1)+k2*(x[1]-3)*(x[1]-3)+k3*(x[2]-5)*(x[2]-5));
}
double CNonlinearOptimization::myconstraint1(unsigned n, const double *x, double *grad, void *data){
++count;
if (grad) {
grad[0] = -1; //grad[0] = d(c1)/dx1
grad[1] = 0; //grad[1] = d(c1)/dx2
grad[2] = 0; //grad[2] = d(c1)/dx3
}
return (0.9-(x[0]-2));
}
我将通过在主函数中应用 nlopt 来调用它的函数,如下所示。 nlopt_set_min_objective(opt,nonlinopt.myfunction, NULL);
nlopt_add_inequality_constraint(opt,nonlinopt.myconstraint1, NULL, 1e-8);
我试图做一个指针:
CNonlinearOptimization nonlinopt;
nlopt_set_min_objective(opt,nonlinopt.myfunction, NULL);
但是,我得到了一些错误:
NonlinearOptimization.cpp(288): error C3867: 'CNonlinearOptimization::myfunction': function call missing argument list; use '&CNonlinearOptimization::myfunction' to create a pointer to member
NonlinearOptimization.cpp(290): error C3867: 'CNonlinearOptimization::myconstraint1': function call missing argument list; use '&CNonlinearOptimization::myconstraint1' to create a pointer to member
有谁知道如何解决它?
正如错误消息所说,您应该使用
&objectName.memberFunctionName
用于获取指向成员函数的指针的语法。请注意&
。尝试以这种方式传递它
nlopt_set_min_objective(opt, &nonlinopt.myfunction, NULL);
相关文章:
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- C++-我可以创建另一个类的成员并在构造函数中使用它吗
- 我应该声明所有不抛出 noexexcept 的成员/函数吗?
- 当我调用对象的方法时,对象的成员会发生变化
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 为什么我的 FreeRTOS 任务看不到类成员?
- 为什么我可以改变常量对象中的成员变量,这是返回常量对象函数的结果?
- 我无法删除 wxApp 类的成员变量
- 我可以使用在类构造函数中初始化的流类型的成员变量吗?
- 我想知道我是否可以将一个类分配给特定的成员数据并创建该类的实例
- 我可以说服自动生成的构造函数将我的 POD 类成员归零吗?
- 我的类中应该有一个Allocator作为成员变量吗
- 成员函数的"this"参数具有"const"类型,但我的函数实际上不是"const"
- 我的编译器是否忽略了我未使用的静态thread_local类成员
- 我写了一个类,它总是将其函数参数委托给它的成员,我该如何改进代码
- 如何制作指针来调用我的成员函数
- 声明我的成员函数参数/参数
- 为什么我无法访问我的成员变量
- 我的成员模板函数声明有什么问题
- 试图找出为什么我的成员初始化列表不工作