opCall in struct don't work

Heinz malagana15 at yahoo.es
Tue Apr 29 12:25:17 PDT 2008


Ary Borenszweig Wrote:

> You need to make the opCall static.
> 
> struct Point {
> 
> 	// ...
> 
> 	static Point opCall(int x, int y) {
> 		// ...
> 	}
> 
> }
> 
> Non-static opCalls can be used like this:
> 
> Point point;
> point(10, 20); // treat point as a function
> 
> Heinz wrote:
> > Hi,
> > 
> > A lot of time without using structs and i'm having a bit of trouble now.
> > 
> > I have in my program a struct and a class:
> > 
> > module Control;
> > 
> > struct Point
> > {
> >     int x, y;
> >     
> >     Point opCall(int x, int y)
> >     {
> >         Point p;
> >         p.x = x;
> >         p.y = y;
> >         return p;
> >     }
> > }
> > 
> > class Control
> > {
> >     private Point mypoint;
> >     
> >     void Hello()
> >     {
> >         mypoint = Point(2, 3);
> >     }
> > }
> > 
> > This module won't compile. I get the following error:
> > 
> > gui\control.d(22): Error: this for opCall needs to be type Point not type gui.control.Control
> > gui\control.d(22): class gui.control.Control member opCall is not accessible
> > 
> > What the hell is wrong with this? I'm using dmd v1.028 under Win32.
> > Thanks in advance.

Hahaha, it worked! thanks for your quick answer.


More information about the Digitalmars-d-learn mailing list