델파이 XE6 보호 유형을 이해하고 그들 중 하나에 일류를 넣을 수 없습니다 :내가 두 단위를 만들
unit UBaseClass;
interface
type
TBaseOuterClass = class
protected type
TBaseInnerClass = class
public
end;
protected
function GetInnerInstance: TBaseOuterClass.TBaseInnerClass; virtual;
end;
implementation
{ TBaseOuterClass }
function TBaseOuterClass.GetInnerInstance: TBaseOuterClass.TBaseInnerClass;
begin
// doesn't matter
end;
end.
그리고 두 번째 장치에 파생 클래스를 넣어 :
unit UDerClass;
interface
uses
UBaseClass;
type
TDerOuterClass = class(TBaseOuterClass)
protected type
TDerInnerClass = class(TBaseInnerClass)
end;
protected
function GetInnerInstance: TBaseOuterClass.TBaseInnerClass; override;
end;
implementation
{ TDerOuterClass }
function TDerOuterClass.GetInnerInstance: TBaseOuterClass.TBaseInnerClass;
begin
end;
end.
내가 컴파일하기 위해 노력하고있어 언제받을
[DCC32 오류] UDerClass.pas (22) : E2362 보호에 액세스 할 수 없습니다 기호 TBaseOuterClass.TBaseIn nerClass
라인 함수 TDerOuterClass.GetInnerInstance : TBaseOuterClass.TBaseInnerClass;
(TBaseOuterClass에서 파생 된) TDerOuterClass에서 TBaseOuterClass.TBaseInnerClass (내부 보호 클래스로)에 액세스 할 수없는 이유를 이해할 수 없습니다. 이 경우 실제로 보호 된 유형은 무엇입니까?
Nested Type Declarations topic에 대한 설명이 없습니다. 그래서이 행동에 대한 이유가 있습니까? 내가 메시지
[DCC32을 얻을 것이기 때문에 나는 TDerOuterClass
protected function GetValue: TSimpleType;
의 기능을 쓸 수 없습니다 그것은
protected type TSimpleType = Integer;
같은 간단한 보호 유형도 관련이
오류] UDerClass.pas (16) : E2003 선언되지 않은 식별자 : 'TSimpleType'
귀하의 사례와 분석은 매우 명확합니다. 이것은 결함 인 것 같습니다. 버그 리포트를 Quality Portal에 제출하십시오. –
10.2 Tokyo에서 수정 됨 : https://quality.embarcadero.com/browse/RSP-16305 –