C ++:使用Eigen时将函数传递给构造函数

时间:2017-10-25 21:55:07

标签: c++ class constructor eigen

我在一个正在研究的课堂上使用Eigen。这是代码摘录:

class model {

public:
    Eigen::MatrixXd Ac;

    model (vars &, std::function<Eigen::MatrixXd()>, std::function<Eigen::MatrixXd()>);
};

model::model (vars & vars, std::function<Eigen::MatrixXd()> muX, 
std::function<Eigen::MatrixXd()> muX2)

    //update Ac
    Ac = muX(vars) + muX2(vars);


};

我们的想法是,在创建model的对象时,用户必须提供函数muXmuX2,并且该类将填充MatrixXd Ac中的值使用muXmuX2vars只是一个由我创建的多个变量组成的类,muXmuX2应该使用vars中的数据作为输入。

然而,在我的XCode中,它给出了一个错误说:“没有匹配函数来调用`std :: function类型的对象”。我还没有编译,但我认为编译器会给我同样的错误。

1 个答案:

答案 0 :(得分:1)

std::function<Eigen::MatrixXd()>意味着它需要一个不接受任何参数并返回Eigen::MatrixXd的函数,我认为这不是你想要做的。您可能希望将其更改为std::function<Eigen::MatrixXd(vars&)>