2017-10-25 11 views
0

저는 작업중인 클래스에서 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의 객체를 생성 할 때, 사용자가 기능 muXmuX2을 제공해야하며, 클래스가 muXmuX2을 사용 MatrixXd Ac에 값을 입력하는 것입니다. vars은 내가 만든 여러 변수로 구성된 클래스이며 muXmuX2vars의 데이터를 입력으로 사용해야합니다.

그러나 내 XCode에서는 "std :: function 유형의 객체 호출에 맞는 함수가 없습니다."라는 오류가 발생합니다. 나는 아직 컴파일하지 않았지만 컴파일러가 나에게 같은 오류를 줄 것이라고 생각한다.

+2

'vars & vars' ?? 그건 끔찍한 명명입니다. 유형, 변수 또는 둘 다 의미가있는 뭔가를 생각해 낼 수있을 것이라고 확신합니다. –

답변

1

std::function<Eigen::MatrixXd()>은 인수를 허용하지 않고 Eigen::MatrixXd을 반환하는 함수를 사용한다는 것을 의미합니다. 이는 사용자가 원하는 것이 아닌 것으로 생각합니다. std::function<Eigen::MatrixXd(vars&)>

+0

사실, 나는'vars'을 가져 와서'MatrixXd'를 반환하고 싶습니다. 또한 왜'const'가 필요한가? – tryingtosolve

+0

@RSahu가 옳았습니다. const가 필요하지 않습니다. – Valentin