0
これは複数回尋ねられていることを知っていますが、ほとんどの回答はわかりにくいです。 私は何が間違っているのか理解するのを助けてくれますか?C++ std :: functionを使用したメンバ関数へのポインタ
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <functional>
class A{
public:
A(double i){
_b = i;
}
double square(double i){
return i*i*_b;
}
private:
double _i;
double _b;
};
double cube(double (*objfunc)(double), double x){
return objfunc(x)*x;
}
int main()
{
double v = 2.0;
A a(v);
using std::placeholders::_1;
std::function<double(double)> f_square = std::bind(&A::square, &a, _1);
double x = cube(f_square,3.0);
std::cout << " x = " << x << std::endl;
}
ありがとうございます。
クラスAとキューブ関数をそのまま使用すると、どのようにしてメイン関数でキューブ関数を使用できますか?
アップデート:修正することになり、これを行うための唯一の方法:
double cube(std::function<double(double)> objfunc, double x){
return objfunc(x)*x;
}
プレーン関数ポインタが必要な場所で 'std :: function'インスタンスを渡そうとしています。前者は後者に転換できません。 –
主な機能を変更するのを手伝ってください。関数の正方形を使用する適切な方法は何ですか? – user1453817
メンバー関数ポインタは単純なポインタではないので、できないと思います。しかし、私は理解が非常に限られています。専門家が入るのを待つようにしましょう。 – user1453817