두개의 버텍스 포인터를 비교할 수 있도록 연산자를 어떻게 오버로딩합니까?C++의 비교 연산자 오버로딩
class graph
{
private:
class vertex;
class edge;
class vertex
{
public:
int index;
int estDistanceToGoal;
int traveledDis;
string location;
다음은> 연산자를 오버로드 한 예입니다. 버텍스 개체를 버텍스 포인터와 비교할 때이 메서드는 트리거에서이 메서드입니다.
bool operator> (vertex* v)
{
cout<<"we did this"<<endl;
return (this->weight > v->weight);
}
다음은 테스트 용 예제입니다. 버텍스 객체와 버텍스 포인터를 비교한다면 "우리가 해냈습니다"라고 인쇄 할 것입니다. 그렇다면 어떻게하면 두 개의 정점 포인터를 비교할 수 있을까요? "이"를 존경 해 주실 수 있습니까?
void test()
{
vertex*a = new vertex("wj",5);
vertex*v = new vertex("something",2);
if(a == v)
{
cout<<"what"<<endl;
}
else
{
cout<<"k"<<endl;
}
}
'if (* a <* v)'와 같은 정점 자체를 비교하고 비교 객체를 정의하여 정점 인수를 취해야합니다. – Barmar
포인터를 비교하여 두 개의 'int'값을 비교할 수 있다고 기대하지 않을 것입니다. 왜 '꼭짓점'을 다르게 할 것입니까? – Barmar