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...