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