Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Classe por Referencia

$
0
0

@thiagomartendal escreveu:

Pessoal, tenho que passar uma classe por referencia para outra classe. Mas acontecem alguns erros pois a classe fracao possui um construtor com atributos. O que fazer?

fracao.h

#ifndef FRACAO_H
#define FRACAO_H
class Fracao{
    private:
        int numerador;
        int denominador;
    public:
        Fracao(int numerador, int denominador);
        int getDenominador();
        int getNumerador();
};
#endif

fracao.cpp

#include <iostream>
#include "fracao.h"
Fracao::Fracao(int numerador, int denominador){
    Fracao::numerador = numerador;
    Fracao::denominador = denominador;
}
Fracao::getDenominador(){
    return Fracao::denominador;
}
Fracao::getNumerador(){
    return Fracao::numerador;
}

adicao.h

#ifndef ADICAO_H
#define ADICAO_H
#include <string>
#include "fracao.h"
using namespace std;
class Adicao{
    private:
        Fracao fracao1;
        Fracao fracao2;
        int denominadorFinal;
    public:
        Adicao(Fracao fracao1, Fracao fracao2);
        string resultado(int numerador1, int denominador1, int numerador2, int denominador2);
};
#endif

adicao.cpp

#include <iostream>
#include <sstream>
#include "adicao.h"
#include "fracao.h"
#include "mmc.h"
Adicao::Adicao(Fracao fracao1, Fracao fracao2){ // O erro acontece aqui
    Fracao Adicao::fracao1 = &fracao1;
    Fracao Adicao::fracao2 = &fracao2;
    int Adicao::denominadorFinal = MMC.calcularDenominadorFinal(Adicao::fracao1.getDenominador(), Adicao::fracao2.getDenominador());
}
string Adicao::resultado(int numerador1, int denominador1, int numerador2, int denominador2){
    string resultado;
    int resultado1, resultado2;
    if(denominador1 == denominador2){
        int soma = numerador1+numerador2;
        stringstream ssoma;
        ssoma << soma;
        stringstream sdenominador;
        sdenominador << Adicao::denominadorFinal;
        resultado = ssoma.str()+"/"+sdenominador.str();
    }else{
        resultado1 = (Adicao::denominadorFinal/denominador1)*numerador1;
        resultado2 = (Adicao::denominadorFinal/denominador2)*numerador2;
        int soma = resultado1+resultado2;
        stringstream ssoma;
        ssoma << soma;
        stringstream sdenominador;
        sdenominador << Adicao::denominadorFinal;
        resultado = ssoma.str()+"/"+sdenominador.str();
    }
    return resultado;
}

Mensagens: 6

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>