std :: for_each, 참조 매개 변수가있는 멤버 함수 호출
-
10-07-2019 - |
문제
반복하고 싶은 포인터 컨테이너가 있으며 참조 인 매개 변수가있는 멤버 함수를 호출합니다. STL로 어떻게해야합니까?
현재 솔루션은 Boost :: Bind, Boost :: ref를 사용하는 것입니다.
// Given:
// void Renderable::render(Graphics& g)
//
// There is a reference, g, in scope with the call to std::for_each
//
std::for_each(
sprites.begin(),
sprites.end(),
boost::bind(&Renderable::render, boost::ref(g), _1)
);
관련 질문 (현재 솔루션에서 파생 된)은 다음과 같습니다. 부스트 :: 참조 인 매개 변수가있는 함수와 바인드. 이것은 구체적으로 부스트 로이 작업을 수행하는 방법을 묻습니다. 나는 그것이 어떻게 될지 묻고있다 없이 후원.
편집하다: 사용하지 않고 똑같은 일을하는 방법이 있습니다. boost
. 사용하여 std::bind
친구들은 동일한 코드를 C ++ 11 호환 컴파일러로 작성하고 컴파일 할 수 있습니다.
std::for_each(
sprites.begin(),
sprites.end(),
std::bind(&Renderable::render, std::placeholders::_1, std::ref(g))
);
해결책
이것은 디자인의 문제입니다 <functional>
. boost :: bind 또는 tr1 :: bind를 사용해야합니다.
다른 팁
체크 아웃 매개 변수/수정으로 std :: foreach를 사용하는 방법. 질문은 for 루프를 사용하여 수행하는 방법을 보여줍니다. 허용 된 답변은 for_each 알고리즘으로이를 달성하는 방법의 예를 제공합니다.
제휴하지 않습니다 StackOverflow