¿Cómo defino operadores de conversión implícitos para registros mutuamente dependientes?
Estoy usando la sobrecarga del operador para los registros en Delphi 2006. (No responda esta pregunta diciéndome que no lo haga).
Tengo dos tipos de registro con elimplícit operador sobrecargado. Ambos están solo en la implementación del módulo, no expuestos a través de la interfaz.
Mi problema es que ahora que son mutuamente dependientes, no sé cómo reenviar la declaración del segundo tipo al compilador. Sé cómo hacer esto con funciones, procedimientos y clases, pero no con registros.
Aquí hay un ejemplo simplificado de lo que estoy tratando de hacer:
implementation
type
TMyRec1 = record
Field1 : Integer;
class operator Implicit(a: TMyRec2): TMyRec1; // <---- Undeclared Identifier here.
end;
TMyRec2 = record
Field2: Integer;
class operator Implicit(a: TMyRec1): TMyRec2;
end;
class operator TMyRec1.Implicit(a:TMyRec2): TMyRec1;
begin
Result.Field1 := a.Field2;
end;
class operator TMyRec2.Implicit(a:TMyRec2): TMyRec2;
begin
Result.Field2 := a.Field1;
end;