Re: Operator Overload between different types
On Tue, 4 Sep 2007 20:55:11 +0200, "Marco Biagioni"
<mbsoftware@interfree.it> wrote:
I'm trying to implement the overload for two different kinds of objects. I
tryed for example:
Dog1 + Dog2;
Dog Dog::operator+(Dog& s)
{
return this->nBau + s.nBau;
}
it works fine.
I need something...
Dog1 + Cat1;
??? Dog::operator+(Cat& s)
{
return ???;
}
How can i implement my overload between different types and what type of
object must return?
I have no idea what the result of Dog+Cat should be, but binary operators
on different types are typically implemented as inline friend functions,
e.g.
struct X
{
friend X operator+(const X& x, const Y& y)
{
return something;
}
friend X operator+(const Y& y, const X& x)
{
return something;
}
};
This way, you can say x+y or y+x. Implemented as a member function of X,
you can only do x+y.
I can only compile my program only specifing "return 0" in overload function
but it doesn't work.
Maybe i must implement overload function as static function outside class
Dog?
The friend method illustrated above is an example of using non-member
functions, which are also called "namespace-scope functions" or less
formally (and less correctly), "global functions".
--
Doug Harrison
Visual C++ MVP