Sturcts with constructor (dmd1.x)

Ellery Newcomer ellery-newcomer at utulsa.edu
Mon Jan 11 15:32:14 PST 2010


On 01/11/2010 04:06 PM, Nrgyzer wrote:
> Hello everyone,
>
> I currently try to create a structure with a construtor, but I always get the following messages:
>
> Error: Foo.this constructors are only for class definitions
> Error: constructor lisim.lsResult.lsResult.this special member functions not allowed for structs
>
> 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 http://www.digitalmars.com/d/2.0/const-faq.html#logical-const. I know that this 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 :)

get rid of the constructor and replace

 > const Foo f = Foo("hello");

with

const Foo f = Foo(0,false,"hello");

and it will work, if you can forgive how ugly it is.



More information about the Digitalmars-d mailing list