【发布时间】:2014-03-02 04:15:45
【问题描述】:
我已咨询(免责声明):
- Class member function pointer
- Calling C++ class methods via a function pointer
- C++: Function pointer to another class function
为了说明我的问题,我将使用此代码(已更新)
#include <iostream>
#include <cmath>
#include <functional>
class Solver{
public:
int Optimize(const std::function<double(double,double>& function_to_optimize),double start_val, double &opt_val){
opt_val = function_to_optimize(start_val);
return 0;
}
};
class FunctionExample{
public:
double Value(double x,double y)
{
return x+y;
}
};
int main(){
FunctionExample F =FunctionExample();
Solver MySolver=Solver();
double global_opt=0.0;
MySolver.Optimize(std::bind(&FunctionExample::Value, &F, std::placeholders::_2),1,global_opt);
return 0;
}
有没有办法调用方法“Value”?我调用函数没有问题(没有类)
typedef double (*FunctionValuePtr)(double x);
但这对我上面的例子没有帮助。我需要明确的方法名称。大多数示例使用静态方法。我不能使用静态方法。
【问题讨论】:
-
此外,
Square S();声明(以及其他两个类似的声明)并没有完全按照您的预期进行。在S的情况下,它实际上声明了一个函数S,它不接受任何参数并返回Square类的实例。
标签: c++ oop pointers methods function-pointers