// Moeda.h 
// Declaração das classes cEuro e cEscudo    ( Versão 2 )
// Aula de 8 de Novembro de 2001


// Alterações à  versão 1 : 
 

// Construtor de conversão de double ...
// Operadores :   ( Overloading de Operadores )
//		operador de conversão  cast para double
//      operador de subtracção 
//      Substitução dos métodos Ler e Escrever pelos operadores >> e <<

#include <iostream.h>


class cEscudo;

class cEuro
{
	double Valor;

public :
	// construtores
	cEuro();
	cEuro( cEscudo &Escudo );   // Construtor de conversão
	cEuro( double db );

	// Input e Output
	void Ler();
	void Escrever();

	// Acesso
	double GetValor();
	

	cEuro operator-( cEuro Eur );		// Subtracção

	friend istream& operator>>( istream &in, cEuro &Eur );
	friend ostream& operator<<( ostream &out, cEuro Eur );

};


class cEscudo
{
	double Valor;

public :
	// construtores
	cEscudo();
	cEscudo( cEuro &Euro );   // Construtor de conversão de cEuro p/ cEscudo
	cEscudo( double db );	  // Construtor de conversão de double p/ cEscudo	
	
	
	// cEscudo( double &db );  Dá erro de compilação na linha 
	// mPrestacao = Pmt( ..., ..., ... )  A função retorna um valor, não uma variável.

	
	//void Ler();       Foi substituido pelo operador >>
	//void Escrever();  Foi substituido pelo operador <<

	// Acesso
	double GetValor();

	// Operadores

	// A mesma história : passagem por referência implica a existência 
	// de um objecto => erro de compilação 
	//cEscudo operator-( cEscudo &Esc );
	//cEscudo operator-( cEscudo Esc );		//  Operador da Subtracção
	
	//operator double();					// Conversão para double
	
	// Input e Output
	// Overloadind dos operadores de input e de output
	// Funções friend

	friend istream& operator>>( istream &in, cEscudo &Esc );
	friend ostream& operator<<( ostream &out, cEscudo Esc );

	// Uma forma alternativa de implementar  o operador de subtracção
	friend cEscudo operator-( cEscudo op1, cEscudo op2 );
};






