Я считаю, что моя перегрузка оператора не работает ни для одного из моих двух типов данных. Моя программа работает с типом данных int, но не с моими определенными учениками классов. студенты - это дерево указателей, так что это может быть моей проблемой. Я обнаружил эту проблему, когда функция поиска не функционировала так, как планировалось. Я надеюсь получить совет относительно того, что я делаю неправильно с моими перегруженными операторами.Перегрузка оператора двоичным деревом поиска
struct Students{
char lastName[20];
char firstName[20];
int IDnumber;
Students();
bool operator == (const Students);
bool operator > (const Students);
bool operator < (const Students);
friend ostream& operator << (ostream& stream, const Students* students);
};
template <class DataType>
TNode<DataType>* BST<DataType>::bstSearch(DataType search)
{
TNode<DataType>* y = root;
while (y!=NULL && search != y->data)
{
if (search < y->data)
{
y = y->left;
}
else
{
y = y->right;
}
}
return y;
}
вот мой overloader код
friend bool operator == (const Students& lh, const Students& rh);
friend bool operator > (const Students& lh, const Students& rh);
friend bool operator < (const Students& lh, const Students& rh);
bool operator ==(const Students& lh, const Students& rh)
{
return lh.IDnumber == rh.IDnumber;
}
bool operator > (const Students& lh, const Students& rh)
{
return lh.IDnumber > rh.IDnumber;
}
bool operator < (const Students& lh, const Students& rh)
{
return lh.IDnumber < rh.IDnumber;
}
это объекты дерева я создаю
BST<Students*> stree;
BST<int> itree;
Я немного поправился от перегрузки вашего оператора –