일부 C 및 C++ 라이브러리를 믹싱하고 있으며 콜백 함수로 작업 할 수있는 포인터가 하나뿐입니다. 내가해야 할 일은 벡터를 반복하는 것뿐입니다. 이 함수는 C++에서 extern "C"
블록되어컨테이너없이 반복자 사용하기
bool call_back(void* data){
done=...
if (!done) cout << *data++ << endl;
return done;
}
주 : 여기 간략화 안된 예이다. call_back
은 true가 반환 될 때까지 호출됩니다. 그것이 호출 될 때마다 다음 요소를 알아 내고 싶습니다. data
은 코드의 다른 곳에서 전달할 수있는 포인터입니다 (위의 예제에서 반복자이지만 다른 것일 수 있음). data
의 내용은 done
을 계산하는 데 사용됩니다.
- 내 벡터에
data
지점이 : 나는data
에주는 두 가지 명백한 옵션을 참조하십시오. data
은 내 벡터의 반복기를 가리 킵니다.
.end() 메서드를 사용할 수 없으면 이터레이터를 사용할 수 없습니다. 맞습니까? 어쩌면 내가 그 데이터를 제거하기 시작하면 않는 한 벡터 혼자 사용할 수 없습니다. vector와 iterator로 구조체를 만들 수 있지만 더 좋은 방법이 있습니까? 너는 무엇을 할 것이냐?
이 함수는 C++ 코드에서만 호출됩니까? –
예, C++ 코드 파일에서 항상 extern "C"가 될 것으로 예상합니다. – User1