class and opCall
BLS
nanali at nospam-wanadoo.fr
Mon Jan 7 04:35:11 PST 2008
Hi,
in another context I ask what this piece of C++ code means ...
//C++
CPoint = {0}
bb explains that I can use :
CPoint p = {0,0};
Jarret adds
....except that if this isn't a static struct declaration, you have to
write:
CPoint p = CPoint(0,0)
// Well I talked about a class instead a struct, but nevertheless
Okay, let's assume that my point class has three member vars as shown in
the example.
How the compiler knwows, which member I mean ?
I think I have to implement opCall explicit ...
class CPoint
{
static CPoint opCall(int _x, int _y)
{
CPoint cp;
cp.x = _x;
cp.y = _y;
return cp;
}
private:
int x;
int z; // extra member, just to demonstrate what I mean.
int y;
}
...
to use CPoint as parameter
void movePoint(CPoint p, bool changecolor = true)
{
// do something
}
//use it as
movePoint(CPoint(10,2));
Do I miss something here ?
Next :
C++
class CFont
{
public:
HFONT m_hFont;
operator HFONT() {return m_hFont;}
}
Actually D doen't support this kind of operator overloading.
Do you see a chance that opCall in conjunction with alias is a
reasonable workaround ?
given opCall :
opCall() {return this.m_hFont;}
and than something similar to :
alias opCall() HFONT() ; // :( don't have the syntax in my mind
Thanks in advance Bjoern
More information about the Digitalmars-d-learn
mailing list