私が作業しているクラスでEigenを使用しています。ここでのコードの抜粋です:C++: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
を供給する必要がありますし、クラスがmuX
とmuX2
を使用してMatrixXd Ac
に値を入力することです。 vars
は、私が作成した複数の変数で構成されるクラスに過ぎず、muX
とmuX2
は、vars
のデータを入力として使用すると予想されます。
しかし、私のXCodeでは、「std :: function型のオブジェクトへの呼び出しに関数が一致しません。私はまだコンパイルしていないが、私はコンパイラが私に同じエラーを与えると思う。
'vars&vars'に変更したいと思っていますか?それはひどい名前です。タイプ、変数、またはその両方のいずれかを意味のあるものに思いつくことができると確信しています。 –