у меня такая ситуация:
type
TWheel = record
private type
TWheelEnum = (whBA, whCA, whFI, whGE, whMI, whNA, whPA, whRM, whRN,
whTO, whVE);
var
FWheelEnum: TWheelEnum;
public
class operator Implicit(const Value: string): TWheel;
class operator Implicit(const Value: TWheel): string;
end;
с:
var
awheel, bwheel: twheel;
begin
try
awheel := 'PA';
bwheel := 'PA';
if awheel = bwheel then writeln ('pippo');
end.
Когда я запускаю, это вызывает у меня эту ошибку:
E2015 Operator not applicable to this operand type
Я решил написать:
if awheel = string(bwheel) then writeln ('pippo');
а можно решить без добавления строки (...)? В первый момент я подумал что-то вроде:
class operator Implicit(const Value: TWheel): Twheel;
но компилятор выдает ошибку, сообщая, что принят только один тип TWheel. Итак, я хотел знать, есть ли решение для этого, или мне нужно использовать тип преобразования со строкой (...)?
Большое спасибо.