I'm having trouble with the friend functions being executed in this program - Can I get someone to look at my code and help???
Primitive.h
Code:
#ifndef PRIMITIVE_H
#define PRIMITIVE_H
#include <iostream>
template <class T>
class Primitive
{
//friend istream& operator>>(istream& in, Primitive& p) { in >> p.data; return in; }
//friend ostream& operator<<(ostream& out, const Primitive& p) { out << p.data; return out; }
public:
Primitive(T num) { data=num; }
Primitive(Primitive& p) { data=p.getData(); }
~Primitive();
//assign
const Primitive& operator=(const Primitive& p) { if(this!=p) data=p.getData(); return *this; }
//equality
bool operator==(const Primitive& p) const { return !(data-p.getData()); }
//addition
Primitive operator+(const Primitive& p) const { return ( Primitive<T> temp(data+p.getData()) ); }
//Unary + -- Turn to positive
const Primitive& operator+(void) { if (data<0) data*=(-1); return *this; }
//Unary - -- Turn to negative
const Primitive& operator-(void) { if (data>0) data*=(-1); return *this; }
//set and get
T getData() { return data;}
void setData(T n) { data=n; }
private:
T data;
};
#endif
main.cpp
Code:
//File main.cpp
#include <iostream>
#include "primitive.h"
using std::cout;
int main()
{
typedef Primitive<int> Pi;
Pi obj1(1), obj2(2), obj3(obj1 + obj2);
cout << obj3 << '\n';
cout << ((obj1 == obj2) ? "equal" : "unequal") << '\n';
cout << ((obj1 == obj1) ? "equal" : "unequal") << '\n';
typedef Primitive<double> Pd;
Pd obj4(34.639), obj5(obj4);
obj4 = obj5;
cout << +(-(obj4)) << '\n';
return 0;
}