이 나는 제공된 함수 템플릿 사용하는 것을 시도하고있다 :호출 포인터 - 투 - 회원 기능은
template <class Process, class BTNode>
void postorder(Process f, BTNode* node_ptr)
{
if (node_ptr != 0)
{
postorder(f, node_ptr->left());
postorder(f, node_ptr->right());
f(node_ptr->data());
}
}
이 내 전화이며, 기능 내가 전달 해요 :
void city_db::print_bst() {
postorder(&city_db::print, head);
}
void city_db::print(city_record target)
{
std::cout << target.get_code();
}
이 컴파일 시간 (G ++) 오류 내가 얻을 수 있습니다 :
CityDb.cpp:85: instantiated from here
BinTree.template:80: error: must use ‘.’ or ‘->’ to call pointer-to-member function in ‘f (...)’
make: *** [CityDb.o] Error 1
이것은 기능 템플릿의 라인 f(node_ptr->data());
을 참조한 것입니다.
이것은 데이터 구조 프로젝트를위한 것입니다. 함수에 함수를 전달할 필요가 없도록 할당이 수정되었지만 꽤 오랫동안이 문제에 관심이있었습니다. 거의 여기에있는 것처럼 느껴집니다. 나는 Google과 Lab TA를 다 써 버렸다. 그래서 StackOverflow에 아이디어가 있다면 크게 환영 할 것이다.
이 사실을 이해하는 데 몇 분이 걸렸지 만 한번 클릭하면 완벽하게 이해할 수 있습니다. 그것을 관리 가능한 부분으로 나누어 줘서 고마워. 마지막 라인은 빌드 오류를 해결했습니다. –