我在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()” 没有物体
是否可以解决此问题?
答案 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)
};