<p>Am 08.05.2015 23:56 schrieb "Martin Frb" <<a href="mailto:lazarus@mfriebe.de">lazarus@mfriebe.de</a>>:<br>
><br>
> What are the scoping rules?<br>
><br>
> Example:<br>
><br>
>   TLazStorageMemBase = object<br>
>   private<br>
>   const<br>
>     CNT_OFFS  = SizeOf(Pointer);<br>
>     DATA_OFFS = CNT_OFFS + (2 * SizeOf(Integer));<br>
>   private<br>
>     FMem: PByte;<br>
>     function GetCapacity: Integer; inline;<br>
>     function GetCount: Integer; inline;<br>
> .....<br>
>   end;<br>
><br>
>   generic TLazGenStorageMem<T> = object(TLazStorageMemBase)<br>
> ...<br>
>     property Capacity: Integer read GetCapacity write SetCapacity;<br>
>     property Count: Integer read GetCount;<br>
>   end;<br>
><br>
><br>
> If I specialize TLazGenStorageMem in an other unit, then I get tons of errors, because all the privet symbols are not accessible.<br>
><br>
> Is that intended?</p>
<p>I'd say that this is not intended, but I'll need to retest this with Delphi.</p>
<p>You forgot one very important piece of information though: what compiler version are you using? If it's 2.6.x, then please test with 3.0.1 or 3.1.1 as there were /many/ changes since then and 2.6.4's generic support is nothing compared to what we now have (despite there still being quite some bugs and missing features).</p>
<p>Regards,<br>
Sven</p>