Problema com operator+ definido fora da classe

1. Problema com operator+ definido fora da classe

Rildo dos Santos Gonçalves
rildo.goncalves

(usa Ubuntu)

Enviado em 11/05/2008 - 08:31h

E ai galera... blz.


É o seguinte:

Qual a diferença de usar

************************************************************************

friend Razao operator+(const Razao &a, const Razao &b){

Razao result(a.n*b.d+a.d*b.n, a.d*b.d);

return result;

}



e usar



Razao operator+(const Razao &a){

Razao result(n* + a.n, d + a.d);

return result;

}

***********************************************************************

Digo isso porque ñ consegui implementar a declaração da função separada da definição.



parece que friend ñ deixa... Já do segundo jeito da certo e consigo separar a declaração e definição em arquivos deferentes...



o codigo fica assim:

*************************************************************************

Razao operator+ (Razao &); //no .h
//ai da certo

Razao Razao::operator+ (Razao &a){ //no.cpp
Razao result(n + a.n, d + a.d); //isso funcionou...ñ me pergunte pq, ja que nao esta
// definido como friend.
return result;
}



e assim ñ da:


friend Razao operator+(const Razao &a, const Razao &b); //no .h


Razao Razao::operator+(const Razao &a, const Razao &b){ //no .cpp

Razao result(a.n*b.d+a.d*b.n, a.d*b.d);

return result;

}



ERRO:`Razao Razao::operator+(const Razao&, const Razao&)' must take either zero or one argument

no `Razao Razao::operator+(Razao&)' member function declared in class `Razao'

*************************************************************************

ele diz que o método deve ter 1 ou menos argumentos e ñ há o tal operator+ declarado na fução.



Será que pra ser definida fora da classe o método só consiga fazer uso de um argumento?



Até mais...



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts