Do constructors in D support the privacy keyword?

Gary Willoughby dev at nomad.so
Sat Sep 7 12:04:56 PDT 2013


On Saturday, 7 September 2013 at 18:49:43 UTC, H. S. Teoh wrote:
> On Sat, Sep 07, 2013 at 08:37:05PM +0200, Gary Willoughby wrote:
>> Do constructors in D support a privacy keyword? I'm guessing 
>> not
>> because if i declare one like this:
>> 
>> class T
>> {
>>     private this()
>>     {
>>     }
>> }
>> 
>> i can still instantiate the class like this:
>> 
>> auto x = new T();
>> 
>> and there is no error thrown. Am i right in thinking the 
>> privacy
>> keyword is ignored?
>
> Did you put the 'new' line in the same file as class T?  In D, 
> 'private'
> means 'private to this module', not 'private to this class' as 
> in C++.
> So 'new T()' should be compilable inside the same module, but 
> not
> outside. If it still compiles outside, I'd say file a bug.
>
>
> T

It was inside the same module. I didn't realise that about 
private. Thanks for the clarification.


More information about the Digitalmars-d-learn mailing list