저는 C++ 클래스를 가지고 있지만 저수준 C도 사용하고 있기 때문에 bsearch
함수를 사용해야합니다. bsearch
의 마지막 인수는 비교 함수이며 클래스의 const 개인 변수에 액세스 할 수 있도록 함수를 구현하려고합니다.멤버 함수를 std :: bsearch와 함께 사용하는 방법
문제는 비교 함수를 멤버 함수로 만들면 정규 함수 포인터로 변환 할 수 없으므로 작동하지 않는다는 것입니다. 비회원 함수를 만들면 그 값을 bsearch
으로 전달할 수는 있지만 클래스의 private 변수에 액세스 할 수는 없습니다.
어떻게해야합니까?
3은 비교 함수 필요가 3 elements.16,32,56 actors.I'm 오프셋 array.I에서 검색을 검색 할 필요 bsearch bytes.I 오프셋되어있다 수단 배우를 비교할 것이지만 나는 const 함수의 위치를 계산하기 위해 const void * actorFile 포인터가 필요하다. function.actorFIle은 클래스 private 변수이다.
@StoryTeller 빠른 답장을 보내 주셔서 감사합니다. 순수한 bsearch를 사용하여 완료 할 수 없습니까? 또한 lower_bound를 빠르게 보았고 cmp 함수도 필요합니다.이 경우 bsearch와 어떤 차이가 있습니까? – sparrow2
'std :: lower_bound'는 어떤 종류의 펑터 (함수 나 람다를 포함한 연산자()가 정의 된 객체)를 취할 수 있습니다. 객체를 사용하면 비교를 수행하는 데 필요한 변수를 보유 할 수 있습니다. – vu1p3n0x
비공개 멤버에 게터를 제공하면 compare 함수는 자유 함수가 될 수 있습니다. 비공개 멤버가 클래스 외부에서 액세스 할 필요가없는 경우 액세스 할 필요가있는 경우이를 공개하거나 액세스 할 수있는 방법을 제공하십시오. – user463035818