2016-09-22 3 views
1

* 편집호출 C++ 표준 : 종류는 오류 메시지를 추가 할

비주얼 스튜디오의 IntelliSense를 내가했습니다 구조체에 대한 포인터의 벡터에를 호출 할 때 정렬 기능을 신고 빨간색 프로그램 초기에 정의되어 있습니다.

내 비교 방법에 대한 함수 포인터를 인스턴스화 한 다음과 같은 종류의 호출 오전 :

bool(*compareNodes)(nodePtr, nodePtr) = compNodes; 

sort(frontier.begin(), frontier.end(), compNodes); 

/* flags compnodes and sort; "cannot determine which instance of overloaded 
* function "compNodes is intended" */ 

compNodes 기능 :

static bool compNodes(nodePtr Node1, nodePtr Node2){ 
    if (Node1->fValue != Node2->fValue) 
     return (Node1->fValue < Node2->fValue); 
    else 
     return (Node1->ID > Node2->ID); 
} 
+3

그리고 Intellisense가하는 일에 관심이 있습니까? –

+0

질문이 있으십니까? –

+0

오류 메시지가 있습니까? – samgak

답변

1

추측 : compNodes를 오버로드됩니다. 오른쪽 과부하에 대한 포인터를 compareNodes으로 현명하게 시도했지만 실제로는 std::sort()에서 사용하고 있지 않습니다. 당신의 경고 수준이 충분했다면

sort(frontier.begin(), frontier.end(), compareNodes); 

, 당신은 compareNodes 현재 사용되지 않는 것을 볼 것입니다 : 라인에 변경합니다.

+0

와우, 그걸 잡지 못했습니다. 그 고정 된 것들, 그리고 내 방식 프로토 타입을 이런 식으로 유지할 수 있습니다! – Adam