www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to implement private constructor

reply Vinod K Chandran <kcvinu82 gmail.com> writes:
Hi all,
Please take a look at this code. Is this the right way to use 
private constructors ?
```d
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);
     }
}
```
Apr 24 2022
next sibling parent reply =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
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
Apr 24 2022
parent Vinod K Chandran <kcvinu82 gmail.com> writes:
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.
Apr 25 2022
prev sibling parent reply bauss <jj_1337 live.dk> writes:
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 ?
 ```d
 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.
Apr 25 2022
parent reply bauss <jj_1337 live.dk> writes:
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 ?
 ```d
 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.
Apr 25 2022
parent Vinod K Chandran <kcvinu82 gmail.com> writes:
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.
Apr 25 2022