Как перегрузить мой оператор таким образом, чтобы я мог сравнивать два указателя вершин?
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)
, и определить объект сравнения для получения аргумента вершины.int
, сравнивая с ними указатели. Почему бы вы сделали это по-другому сvertex
?