代码之家  ›  专栏  ›  技术社区  ›  tryingtosolve

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

  •  0
  • tryingtosolve  · 技术社区  · 8 年前

    我在一个我正在研究的类中使用了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 使用 muX2 . vars 多路复用器 muX2 预计将在中使用数据 增值税 作为输入。

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Valentin    8 年前

    std::function<Eigen::MatrixXd()> 意味着它接受一个不接受任何参数并返回 Eigen::MatrixXd 我认为这不是你想做的。你可能想把它改成 std::function<Eigen::MatrixXd(vars&)>