有没有一种方法可以从同一类中的函子调用类方法?

时间:2018-08-27 11:13:15

标签: c++ class functor

我在C ++中有点陌生,所以不确定如何处理此类问题。我有一类带有几种私有方法的类。在其中一个方法中,有一个仿函数,我想从中调用另一个类方法。 这是示例代码:

UPDATE t
SET
    t.attr0   = trn.attr0,
    t.attr1   = trn.attr1
FROM( 
    SELECT id, max(transaction_date) as attr0,
    max(CASE 
            WHEN transaction_code in ('a', 'b', 'c')
            THEN transaction_date  
            ELSE NULL 
        END) as attr1
    FROM table1
    GROUP BY id) trn
INNER JOIN table0 t ON t.id=trn.id

当我要制作此文件时,出现错误:

  

无法调用成员函数“ void new_space :: myNewClass :: f2()”   没有物体

是否可以解决此问题?

1 个答案:

答案 0 :(得分:0)

您需要使函子有权访问创建它的对象的this指针。像这样:

void myNewClass::f2()
{
    struct my_functor : Functor<double>
    {
        myNewClass *self;
        my_functor(myNewClass& self): Functor<double>(3,3), self(&self) {}
        int operator()(const Eigen::VectorXd &x, Eigen::VectorXd &fvec) const
        {
            self->f2();
            ...
        }
    };

    // when creating the functor, do it like this:
    // my_functor(*this)
};