Delphi 中嵌套枚举的自己的命名空间
own namespace for nested enums in Delphi
有没有办法将 Delphi 中的嵌套枚举放入自己的命名 space 中?
此代码生成 E2004:标识符已重新声明,因为两个枚举都包含 "unknown"。
TMyType1 = class
public type
TMyType1Enum = (unknown, val1, val2);
public
constructor Create();
...
end;
TMyType2 = class
public type
TMyType2Enum = (unknown, other1, other2, other3); // causes E2004
public
constructor Create();
...
end;
在 C++ 中,枚举元素的标识符都在不同的范围内(TMyType1::unknown 和 TMyType2::unknown)。
是否有可能在 Delphi 中实现类似的东西,除了在标识符前面或后缀(MyType1EnumUnknown、MyType1EnumVal1、...、MyType2Enumunknown、...)?
尝试$SCOPEDENUMS
。来自 http://docwiki.embarcadero.com/RADStudio/en/Scoped_Enums_(Delphi):
type
TFoo = (A, B, Foo);
{$SCOPEDENUMS ON}
TBar = (A, B, Bar);
{$SCOPEDENUMS OFF}
begin
WriteLn(Integer(Foo));
WriteLn(Integer(A)); // TFoo.A
WriteLn(Integer(TBar.B));
WriteLn(Integer(TBar.Bar));
WriteLn(Integer(Bar)); // Error
end;
有没有办法将 Delphi 中的嵌套枚举放入自己的命名 space 中?
此代码生成 E2004:标识符已重新声明,因为两个枚举都包含 "unknown"。
TMyType1 = class
public type
TMyType1Enum = (unknown, val1, val2);
public
constructor Create();
...
end;
TMyType2 = class
public type
TMyType2Enum = (unknown, other1, other2, other3); // causes E2004
public
constructor Create();
...
end;
在 C++ 中,枚举元素的标识符都在不同的范围内(TMyType1::unknown 和 TMyType2::unknown)。
是否有可能在 Delphi 中实现类似的东西,除了在标识符前面或后缀(MyType1EnumUnknown、MyType1EnumVal1、...、MyType2Enumunknown、...)?
尝试$SCOPEDENUMS
。来自 http://docwiki.embarcadero.com/RADStudio/en/Scoped_Enums_(Delphi):
type
TFoo = (A, B, Foo);
{$SCOPEDENUMS ON}
TBar = (A, B, Bar);
{$SCOPEDENUMS OFF}
begin
WriteLn(Integer(Foo));
WriteLn(Integer(A)); // TFoo.A
WriteLn(Integer(TBar.B));
WriteLn(Integer(TBar.Bar));
WriteLn(Integer(Bar)); // Error
end;