estoy usando la sobrecarga de operadores para los registros en Delphi 2006. (Por favor, no responder a esta pregunta diciendo que no me.)¿Cómo puedo definir operadores de conversión implícitos para registros mutuamente dependientes?
Tengo dos tipos de registro con el operador implícita 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 declarar el segundo tipo al compilador. Sé cómo hacer esto con funciones, procedimientos y clases, pero no con registros.
Aquí es un ejemplo simplificado de lo que yo 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;
Si cada tipo puede convertir implícitamente el mismo que el otro tipo, es posible que desee volver a examinar si realmente necesita dos tipos separados . –
@Rob: es bastante posible. Recientemente me encontré con esta misma situación cuando tenía dos tipos diferentes de vectores, uno compuesto por enteros y uno de flotadores. Necesita ambos tipos para cosas diferentes, pero desea que los dos sean mutuamente compatibles. La solución fue básicamente la que publicaste. –
Los tipos no son tan simples. Uno lleva estadísticas de resumen sobre el otro. Se usan para agrupar lógicamente datos que se transmiten a otros lugares. [vuelto a publicar para tratar de deshacerse del exceso de espacio en blanco.] –