2016-06-18 4 views
3

私は内部保護クラスを持つ基本ジェネリッククラスを持っています。どのように私は基本クラスから継承し、保護された内部クラスにアクセスするのですか?保護されたデータ型のクラスから継承する方法は?

例として、このコードはコンパイルされません。このよう

unit uFoo; 

interface 

type 

    TFoo<T> = class 
    protected 
    type 
     TFooProtected = class 

     end; 
    end; 

    TFoo2<T> = class(TFoo<T>) 
    protected 
    item: TFooProtected; 
    end; 
+0

タイプを完全修飾する必要があります: 'item:TFoo .TFooPrivate;' –

+0

そしてこの質問はジェネリックス自体とは何の関係もありません。型が内部的に宣言されているどのクラスでも有効です。 –

答えて

6

type 
    TFoo<T> = class 
    protected 
    type 
     TFooProtected = class 
     end; 
    end; 

    TFoo2<T> = class(TFoo<T>) 
    protected 
    item: TFoo<T>.TFooProtected; 
    end; 

注意これはジェネリックとは何の関係もないこと。型が内部的に宣言されているどのクラスでも有効です。

+0

ありがとう@レミー - 完璧に動作します! –

関連する問題