Thread overview
How to implement private constructor
Apr 25, 2022
Vinod K Chandran
Apr 25, 2022
Ali Çehreli
Apr 25, 2022
Vinod K Chandran
Apr 25, 2022
bauss
Apr 25, 2022
bauss
Apr 25, 2022
Vinod K Chandran
April 25, 2022

Hi all,
Please take a look at this code. Is this the right way to use private constructors ?

class Foo {
    int p1 ;
    string p2 ;
    bool p3 ;

    private this(int a, string b, bool c) {
        this.p1 = a
        this.p2 = b
        this.p3 = c
    }

    this(int a) {
        this(a, "some string", true);
    }

    this(int a, string b) {
        this(a, b, true);
    }
}
April 24, 2022
On 4/24/22 17:18, Vinod K Chandran wrote:

>      private this(int a, string b, bool c) {

Looks good to me.

There are other ways as well:

class Foo {
private:
  // ...

public:
  // ...
}

Or:

class Foo {
  private {
    // ...
  }

  // ...
}

Ali

April 25, 2022

On Monday, 25 April 2022 at 00:18:03 UTC, Vinod K Chandran wrote:

>

Hi all,
Please take a look at this code. Is this the right way to use private constructors ?

class Foo {
    int p1 ;
    string p2 ;
    bool p3 ;

    private this(int a, string b, bool c) {
        this.p1 = a
        this.p2 = b
        this.p3 = c
    }

    this(int a) {
        this(a, "some string", true);
    }

    this(int a, string b) {
        this(a, b, true);
    }
}

Yes and in addition to Ali's message then remember it's private for the module only.

April 25, 2022

On Monday, 25 April 2022 at 07:18:44 UTC, bauss wrote:

>

On Monday, 25 April 2022 at 00:18:03 UTC, Vinod K Chandran wrote:

>

Hi all,
Please take a look at this code. Is this the right way to use private constructors ?

class Foo {
    int p1 ;
    string p2 ;
    bool p3 ;

    private this(int a, string b, bool c) {
        this.p1 = a
        this.p2 = b
        this.p3 = c
    }

    this(int a) {
        this(a, "some string", true);
    }

    this(int a, string b) {
        this(a, b, true);
    }
}

Yes and in addition to Ali's message then remember it's private for the module only.

Oops typo.

What I meant is that private is module level, so it's not private in the module, but it is for other modules.

April 25, 2022
On Monday, 25 April 2022 at 02:22:42 UTC, Ali Çehreli wrote:
>
> Looks good to me.
> There are other ways as well:
>
Thanks a lot. All I wanted to implement more than ctor with different parameters and avoid code duplication.

April 25, 2022

On Monday, 25 April 2022 at 07:19:31 UTC, bauss wrote:

> >

Yes and in addition to Ali's message then remember it's private for the module only.

Oops typo.

>

What I meant is that private is module level, so it's not private in the module, but it is for other modules.

Thanks for the reply. Got it. All I wanted to implement more than ctor with different parameters and avoid code duplication.