Type conversion function for user defined type...

Z

zaeminkr

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::eek:perator DRect() or IRect::eek:perator DRect*()?

Thanks in advance.
 
S

Sylvester Hesp

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::eek:perator DRect() or IRect::eek:perator 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top