 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Guest
|
Posted: Wed May 16, 2007 9:11 am Post subject: 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. |
|
| Back to top |
|
 |
Sylvester Hesp Guest
|
Posted: Wed May 16, 2007 9:11 am Post subject: Re: Type conversion function for user defined type... |
|
|
<zaeminkr (AT) gmail (DOT) com> wrote in message
news:1179301834.835559.212730 (AT) n59g2000hsh (DOT) googlegroups.com...
| Quote: | 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)
| Quote: | 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 |
|
| Back to top |
|
 |
Powered by phpBB © 2001, 2006 phpBB Group
|