我在一个正在研究的课堂上使用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
的对象时,用户必须提供函数muX
和muX2
,并且该类将填充MatrixXd Ac
中的值使用muX
和muX2
。 vars
只是一个由我创建的多个变量组成的类,muX
和muX2
应该使用vars
中的数据作为输入。
然而,在我的XCode中,它给出了一个错误说:“没有匹配函数来调用`std :: function类型的对象”。我还没有编译,但我认为编译器会给我同样的错误。
答案 0 :(得分:1)
std::function<Eigen::MatrixXd()>
意味着它需要一个不接受任何参数并返回Eigen::MatrixXd
的函数,我认为这不是你想要做的。您可能希望将其更改为std::function<Eigen::MatrixXd(vars&)>