Is it your requirement to use friend function? Else you can use this code...
Code:
#include <iostream>
using namespace std;
class List
{
public:
typedef int VALUE_TYPE;
//VALUE_TYPE array[CAPACITY];
static const int CAPACITY=30;
List(); //constructor
List(List& x); //copy constructor
//void destroy();
//void assign();
void remove(); //destroy operation
void first(); //first operation
void next(); //next operation
void prev(); //previous operation
void Makecurrent(int x); //makecurrent operation
VALUE_TYPE current(); //shows current position
VALUE_TYPE examine(); //examine operation
void replace(VALUE_TYPE v); //replace operation
VALUE_TYPE insertafter(VALUE_TYPE v); //insert after operation
VALUE_TYPE insertbefore(VALUE_TYPE v); //insert before operation
VALUE_TYPE size(); //Count operation
VALUE_TYPE getPos()
{
return pos;
}
VALUE_TYPE setPos(VALUE_TYPE val)
{
pos = val;
}
VALUE_TYPE getUsed()
{
return used;
}
VALUE_TYPE setUsed(VALUE_TYPE val)
{
used = val;
}
VALUE_TYPE getArrayValue(int index)
{
return array[index];
}
VALUE_TYPE setArrayValue(int index, int val)
{
array[index] = val;
}
List operator +(List x);
List operator =(List x);
int operator ==(List x);
//Operator overloads
// << operator
friend ostream & operator <<(ostream& out, const List x);
/*
friend List operator +(const List x, const List y);
friend void operator =(List x, const List z);
friend int operator ==(List& x, List& y);
*/
private:
VALUE_TYPE pos;
VALUE_TYPE used;
VALUE_TYPE array[CAPACITY];
};
ostream & operator <<(ostream& out, const List x)
{
for(int i=0;i<List::CAPACITY;i++)
out << x.array[i] << " ";
return out;
}
//+ operator
List List::operator +(List x)
{
List result;
result.setPos(x.getPos());
result.setUsed(x.getUsed());
for(int i=0;i<x.CAPACITY;i++)
{
result.setArrayValue(i, (array[i] + x.getArrayValue(i)) );
}
return result;
}
List List::operator =(List x)
{
List result;
result.setPos(x.getPos());
result.setUsed(x.getUsed());
for(int i=0;i<x.CAPACITY;i++)
{
result.setArrayValue(i, x.getArrayValue(i) );
}
return result;
}
//== operator
int List::operator==(List y)
{
int flag = 1;
for(int i=0;i<y.CAPACITY;i++)
{
if(array[i] != y.getArrayValue(i))
{
flag = 0;
break;
}
}
return flag;
}