![](/img/trans.png)
[英]C++: how can I overload a function so that it can take any functor, including pointer to member functions?
[英]How to access the member functions of a Functor using std::function in C++?
我在C ++中有一個類,它也是一個函子,並且包含另一個成員函數。 函數的返回值取決於x和alpha。
class A {
A(double x) : x(x) { }
/* snip */
double operator() (double x);
double derivative(double x);
double alpha = 1.0;
}
我想訪問這兩個並將它們存儲在另一個類的函數對象中,如下所示:
class B {
/* snip */
function<double(double)> f;
function<double(double)> d;
}
我想在B的構造函數中同時初始化f和d。 我認為以下可以初始化f
this->f = A(1.0);
要么
A a(1.0);
this->f = a;
我的問題是:如何為d實現相同的初始化? 我正在使用g ++ 4.8.1(C ++ 11語法)
您需要將成員函數綁定到A的實例:
d = std::bind(&A::derivative, &a, std::placeholders::_1);
其中a
是A
的實例。 這是因為成員函數this
具有隱式的第一個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.