![]() |
Type conversion function for user defined type...
I have a question about type conversion function for user defined
type. I have two classes class DRect { private : double x0; double y0; double x1; double y1; public : DRect(double a, double b, double c, double d) : x0(a), y0(b), x1(c), y1(d) {} void Union(DRect* p) { x0 = MIN(x0, p->x0); y0 = MIN(y0, p->y0); x1 = MAX(x1, p->x1); y1 = MAX(y1, p->y1); } } class IRect { private : int x0; int y0; int x1; int y1; public : IRect(int a, int b, int c, int d) : x0(a), y0(b), x1(c), y1(d) {} } And I want to do something like this. { DRect d(3.4, 2.6, 19.2, 93.2); IRect i(10, 10, 100, 100); d.Union(i); // or d.Union(&i) } Is it possible to make a such type conversion fuction - IRect::operator DRect() or IRect::operator DRect*()? Thanks in advance. |
Re: Type conversion function for user defined type...
<zaeminkr@gmail.com> wrote in message news:1179301834.835559.212730@n59g2000hsh.googlegr oups.com... >I have a question about type conversion function for user defined > type. > > I have two classes > > class DRect > { > private : > double x0; > double y0; > double x1; > double y1; > public : > DRect(double a, double b, double c, double d) : x0(a), y0(b), > x1(c), y1(d) {} > void Union(DRect* p) You want to accept a const DRect here, as you're not interested in changing it (and therefore you don't need the restriction of the passed DRect being non-const). You probably also want to accept a reference rather than a pointer - passing 0 is pretty pointless (no pun intended ;)), and it makes the use of the class a lot easier (no need for the & everywhere, plus you can pass temporaries and such) > And I want to do something like this. > > { > DRect d(3.4, 2.6, 19.2, 93.2); > IRect i(10, 10, 100, 100); > > d.Union(i); > // or > d.Union(&i) > } > > > Is it possible to make a such type conversion fuction - > IRect::operator DRect() or IRect::operator DRect*()? Of course, but you obviously already know the syntax, so what's the problem? class IRect { // ... public: operator DRect() const { return DRect(x0, y0, x1, y1); } }; Now you can use d.Union(i); - Sylvester |
| All times are GMT. The time now is 01:14 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.