std :: function의 맵을 생성하려고하는데 몇 개의 매개 변수를 바인딩하려하지만 오류가 발생했습니다. 그래서, 내 표준 : : 함수 정의는std :: function과 std :: map을 사용하여 std :: bind를 사용하는 방법
using abc = std::function<double(const double& t1, const double& t2)>;
하고지도 내가이 맵에 삽입하려고하는 방법 내가 정의한
conversion_.emplace(
std::make_pair("a", "b"),
std::bind(conversion, 3, std::placeholders::_1));
conversion_.find(std::make_pair("a", "b"))->second(4); -- Access
입니다
std::map<std::pair<std::string, std::string>, abc> conversion_;
입니다 함수 변환,하지만 내가 아래의 오류를주는 함수에 액세스하려고하면
error: no match for call to ‘(const std::function<double(const double&, const double&)>) (int)’
전체 코드를 추가 : 변환 기능은 별도의 파일에 정의되어 있습니다 : 나는지도를 정의하기 위해 노력하고
namespace x
{
double conversion(const double& a, const double& b);
}
헤더 파일
namespace x
{
class main
{
public:
using abc = std::function<double(const double& t1, const double& t2)>;
main();
private:
std::map<std::pair<std::string, std::string>, abc> conversion_;
};
}
이
CPP 파일
namespace x
{
main::main()
{
conversion_.emplace(
std::make_pair("a", "b"),
std::bind(conversion, 3, std::placeholders::_1));
auto m = conversion_.find(std::make_pair("a", "b"))->second(4);
}
}
그것은 '바인딩'호환 개체를 생성하지 않는 것 같습니다. 'conversion'의 선언은 무엇입니까? –
게시 ** 모든 ** 코드. 그와 같은 핵심 세부 사항을 생략 할 수는 없습니다. 올바른 것일 수도 있습니다. –
[mcve]를 게시하십시오. 현재로서는 '변환'이 무엇인지 알지 못합니다. 하지만 그것도 없어도 : abc는 두 개의 매개 변수의 함수이지만 하나만 사용하면됩니다. 저것 좀 봐. – Angew