Берем пример класса, в нем есть переменные класса. Некоторые переменные имеют типы чисел (integer, double). С ними понятно, как выполнять сравнение.
А если у Вас есть переменная типа указатель (на класс или на буфер данных). Как выполнять сравнение? Сравнивать адреса или сравнивать содержимое по ссылке?
Или например, переменная типа строка, она же тоже есть указатель. Идентичность - это одинаковый адрес строки или одинаковое значение строки?
Вот такие примеры как раз и говорят, что алгоритм сравнения приходиться писать индивидуально для каждого класса.
Я в одном из своих проектов, правда не для целей сравнения, а для целей сохранения в xml, сделал в базовом классе несколько переменных и функций примерно следующего содержания:
- Код: Выделить всё
DIB_TypeParams:Array of integer;//0 - Double
DIB_Params:Array of Pointer;
Procedure DIB_AddParam(Var par_Param:integer);overload;
...
Procedure TMyClass.AfterConstruction;
...
DIB_AddParam(NodeNum);
...
Дальше базовый класс у меня уже знает, какие поля у меня есть, и я для них уже пишу функционал типа сохранения, загрузки, сравнения, редактирования и т.п.