簡體   English   中英

如何在C ++中使用std :: function訪問Functor的成員函數?

[英]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);

其中aA的實例。 這是因為成員函數this具有隱式的第一個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM