#include <iostream>
using namespace std;
class fdata
{
float value;
public:
fdata ( float v ) { value = v; }
};
class data
{
int value;
public:
data ( int v ) { value = v; }
friend data operator+ ( data &, data & );
friend data operator+ ( int, data & );
friend data operator+ ( data &, int );
friend data operator- ( data &, data & );
friend data operator* ( data &, data & );
friend data operator/ ( data &, data & );
friend data operator+ ( data &, fdata & );
friend data operator+ ( fdata &, data & );
friend ostream& operator<< (ostream& out, data &d);
friend istream& operator>> (istream& in, data &d);
data operator++ ( void );
data operator++ ( int ignore );
};
ostream& operator<< (ostream& out, data &d)
{
return out << d.value << endl;
}
istream& operator>> (istream& in, data &d)
{
in >> d.value ;
return in;
}
data operator+ ( data &d1, data &d2 )
{
d1.value = d1.value + d2.value;
return d1;
}
data operator+ ( int a, data &d )
{
d.value = a + d.value;
return d;
}
data operator+ ( data &d, int a )
{
d.value = d.value + a;
return d;
}
data operator- ( data &d1, data &d2 )
{
d1.value = d1.value - d2.value;
return d1;
}
data operator* ( data &d1, data &d2 )
{
d1.value = d1.value * d2.value;
return d1;
}
data operator/ ( data &d1, data &d2 )
{
d1.value = d1.value / d2.value;
return d1;
}
data data::operator++ ( void )
{
data d(1);
(*this) = (*this) + d;
return (*this);
}
data data::operator++ ( int ignore )
{
data returndata = (*this);
data d(1);
(*this) = (*this) + d;
return returndata;
}
data operator+ ( data &d1, fdata &fd1 )
{
data d2(0);
d2 = d1 + fd1;
return d2;
}
data operator+ ( fdata &fd1, data &d1)
{
fdata fd2(0.0);
fd2 = fd1 + d1;
return fd2;
}
int main (void)
{
data d(1);
data d1(2);
data d2(3);
fdata fd1(1);
operator+(d1, d2);
operator<<(cout, d);
operator-(d, d1);
operator<<(cout, d);
operator*(d1, d);
operator<<(cout, d);
operator/(d, d1);
operator<<(cout, d);
operator+(d, 45);
operator<<(cout, d);
operator+(3, d);
operator<<(cout, d);
++d;
operator<<(cout, d);
d++;
operator<<(cout, d);
operator+(d, fd1);
operator<<(cout, d);
operator+(fd1, d);
operator<<(cout, fd1);
return 0;
}
The function that i am having problem with is
friend data operator+ ( data &, fdata & ); friend data operator+ ( fdata &, data & );
When i compile, the 1st function doesn't give any problem, but the 2nd function gives some errors.
What i am trying to achieve here is making this two classes have the expression:
data1 = data2 + fdata1
fdata1 = fdata2 + data1
So what has i done wrong with the 2nd function and is my 1st function correct? Thanks

New Topic/Question
Reply



MultiQuote



|