2017-12-10 11 views
-1

사용자 지정 비교 함수를 사용하여 정렬 및 힙에 사용하려고합니다. 현재 클래스 노드는 operatir <을 사용합니다. 나는 비 정적으로 Cmpr을 정의 error.I가 정적 만들기 위해 시도 non_static 기능 멤버를 가지고 :클래스의 정적 함수는 오류를 나타냅니다. 두 개 이상의 데이터 형식이 선언에 있습니다.

class Node{ 
public: 
    int id; 
    int dist; 
    Node(int node_id, int fdist = -1): 
     id (node_id), 
     dist (fdist) 
     {}; 
    bool operator<(const Node & other) const{ 
     return dist > other.dist; 
    } 

    static bool Cmpr(Node a, Node b){ 
     return a->dist > b->dist; 
    } 
}; 

나는 항상 다음과 같은 오류 얻을 :

file.cpp on line 14:36: error: two or more data types in declaration of 'Cmpr' 
static bool Cmpr(Node a, Node b){ 

무엇 내 코드가 잘못 됐어?

+0

정적 bool Cmpr (노드 a, 노드 b) {'/'정적 bool Cmpr (노드 * a, 노드 * b) {' – user0042

+0

아, 그 감사하는 sed. Halley의 팬과 그의 Comet의 고전 awk을 24 시간 내내 더 좋아합니다. – user4581301

답변

0

정확한 코드인지 잘 모르겠지만 다른 오류가 표시되어 컴파일러에서 불평 할 것입니다. 수신자 :

static bool Cmpr(Node a, Node b){ 
    return a->dist > b->dist; 
} 

노드 a와 b는 포인터가 아닌 것으로 취급합니다. 이를 다음과 같이 변경하면 :

static bool Cmpr(Node a, Node b){ 
    return a.dist > b.dist; 
} 

컴파일하는 동안 전혀 오류가 발생하지 않습니다.

+0

고마워, 사형! 당신 말이 맞아요! 그게 내 문제를 해결하는지 확인하기 위해 코드를 바꿨습니다. 되 돌리는 걸 잊었 어! 오류없이 로컬 컴퓨터에서 확인하고 컴파일했습니다! CodeFights를 사용해 보았을 때만 오류가 발생했습니다! 분명히 정적 인 방법에 문제가 있습니다 !!! –