opCall in struct don't work

Ary Borenszweig ary at esperanto.org.ar
Tue Apr 29 12:12:17 PDT 2008


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.


More information about the Digitalmars-d-learn mailing list