// author Martin Kjellqvist ITM Mitthögskolan if it works; if not, I have no idea.

#include<iostream>

using namespace std;
// klassdefinition
struct C{
	int i;
	C():i(0){ }
	C(int i):i(i){ }
	C operator +(const C& rhs) const;
	virtual ~C(){}
};
// medlemsdefinition
C C::operator + ( const C& rhs) const{
    return C( this->i+ rhs.i);
}
// global operator ( ej medlem till C)
C operator - (const C & lhs, const C & rhs ){
	return C(lhs.i-rhs.i);
}

// f deklarerar ett nytt objekt i argumentlistan
void f(C obj){
  cout<<"C:"<<obj.i<<endl;
}

int main(){
	f( C(3)+C(7) );
	f( C(4)-C(5) );
	return 0;
}