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

Спасибо @Remy - отлично работает! –

 Смежные вопросы

  • Нет связанных вопросов^_^