Thread overview | |||||
---|---|---|---|---|---|
|
April 29, 2008 opCall in struct don't work | ||||
---|---|---|---|---|
| ||||
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. |
April 29, 2008 Re: opCall in struct don't work | ||||
---|---|---|---|---|
| ||||
Posted in reply to Heinz | 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.
|
April 29, 2008 Re: opCall in struct don't work | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ary Borenszweig | 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.
|
Copyright © 1999-2021 by the D Language Foundation