On Saturday, 12 May 2018 at 15:36:56 UTC, Walter Bright wrote:
On 5/12/2018 8:18 AM, Piotr Mitana wrote:
What I am trying to do is:


========== a.d ============

class P
{
    private this();
}

final class C1 : P { }
final class C2 : P { }

======== test.d ============

import a;

void foo()
{
    P[] twoPs = [ new C1(), new C2() ]; // works
}

class C3 : P   // fails
{
}

============================

dmd test a
Error: constructor a.P.this is not accessible from module test

OK, Walter, point for you for this :)

I still think that this is a kind of a hack (if I need to create an instance of P directly, I need a factory method - it's also not that clean and obvious), but in fact it effectively seems to do what I want to achieve.

Although I consider sealed as a nice addition still to make things nice and clean, I understand that it may be not enough justified to add a new keyword to the language. Thank you for all the opinions on that. :)

Reply via email to