this 질문에 제공된 솔루션을 사용하려고합니다. 나는 "remove_if"클래스 내에서 술어 함수를 사용했다.C++ 클래스 내에서 술어 함수 포인터 사용
void classname::function1()
{
vector<NeighborPoint> neighbors;
....
neighbors.erase(std::remove_if(neighbors.begin(),neighbors.end(),&classname::cannotMoveIn), neighbors.end());
...
}
bool classname::cannotMoveIn(NeighborPoint mp)
{
return !mp.inGridNotOccupied;
}
해당 코드가 클래스에없고 술어가 구성원 함수가 아닌 경우이 코드가 작동합니다. 그러나 이제는 remove_if 템플릿과 프리디 케이트 매개 변수의 비 호환성 (하나의 오류 포함 : 오류 C2064 : 용어는 인수 1 개를 취하는 함수로 평가되지 않음)을 참조하는 것으로 보이는 긴 오류 메시지가 표시됩니다.
참고 : 코드는 상담원이 이동할 수없는 인접 그리드 셀 (8 개의 가능한 셀 중)을 제거하려고합니다.
누구에게 잘못된 생각이 있습니까?
당신의 술어가'NeighborPoint'를 입력 매개 변수로 받아 들여야하지 않습니까? 귀하의 벡터는 'NeighborPoint' 타입입니다. 'MoorePoint'와'NeighborPoint'는 관련이 있습니까? –
죄송합니다. MoorePoint를 NeighborPoint로 변경하여 여기에 게시 할 때 명확하게 나타내지 만 그 중 하나를 놓쳤습니다. – wmac