On 03/18/2010 05:43 PM, Paul D. Anderson wrote:
If I'm implementing a struct and want to provide for duplication, is there a 
standard way to implement this?

Here's an example:

//-------------------------------

struct S {

     // members of the struct -- three integer values
     int a;
     int b;
     int c;

     // here's a copy constructor
     this(S s) {
         this.a = s.a;
         this.b = s.b;
         this.c = s.c;
     }

     // here's the dup property
     S dup() {
         S s;
         result.a = this.a;
         result.b = this.b;
         result.c = this.c;
         return s;
     }

     // here's opAssign for S
     void opAssign(S s) {
         this.a = s.a;
         this.b = s.b;
         this.c = s.c;
     }


} // end struct S

// and here's a copy function
S copy(S s) {
     S t;
     t.a = s.a;
     t.b = s.b;
     t.c = s.c;
     return t;
}

//-------------------------------

Which of these three calls is "better" (more efficient, more intuitive, more 
consistent...)?

S s;    // the original struct

S t = s.dup;     // copied via dup
S u = S(s);      // copied via copy constructor
S v = s;           // copied via opAssign
S w = copy(s);  // copied via copy function

Or is this a distinction without a difference?

Paul





this(this) is the copy constructor, I think.

Try using that :)

Reply via email to