 |
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 |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|