digitalmars.D - Re: Sturcts with constructor (dmd1.x)
- Nrgyzer <nrgyzer googlemail.com> Jan 12 2010
dsimcha Wrote:== Quote from Nrgyzer (nrgyzer googlemail.com)'s articleHello everyone, I currently try to create a structure with a construtor, but I always get the
Error: Foo.this constructors are only for class definitions Error: constructor lisim.lsResult.lsResult.this special member functions not
By compiling the follwing code: struct Foo { int len; bool len_done; const char* str; int length() { if (!len_done) { len = strlen(str); len_done = true; } return len; } this(char* str) { this.str = str; } } const Foo f = Foo("hello"); bar(f.length); I found that source on
source is for d2 and not for d1 but does d1 support similar operations (or is there no support for struct-constructors)?Thanks in advance :)
Struct constructors are D2 only. That said, you can fake them in D1 by overloading static opCall: struct Foo { uint field; static Foo opCall(SomeType someArgument) { Foo foo; // Do stuff. foo.field = someValue; return foo; } } auto foo = Foo(someArgument);
Thanks - that solution works great :)
Jan 12 2010