Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Recuperar Nome do Titular e número do CPF

Estou fazendo o curso https://cursos.alura.com.br/course/c-plus-plus-orientacao-objetos-classes-metodos-atributos/task/86069

Nele temos uma classe chamada Conta, uma chamada Titular e uma chamada Cpf

class Conta
{
private:
    static int numeroDeContas;//static diz que é de toda a classe e não de algum objeto

    std::string numero_conta;
    Titular titular;

    float saldo;

public:
    explicit Conta(std::string numero, Titular titular);
    ~Conta();

    void sacar(float valorASacar);
    void depositar(float valorADepositar);

    float recuperaSaldo() const;
    std::string recuperaNumero() const;
    static int recuperaNumeroDeContas();//não é dos elementos, é da classe
};
class Titular
{
private:
    Cpf cpf;
    std::string nome;
    void verificaTamanhoDoNome();

public:
    explicit Titular(Cpf cpf, std::string nome);
    std::string recuperaNome();
};
class Cpf
{
private:
    std::string numero;
    void validaCpf();
public:
    explicit Cpf(std::string numero);
    std::string recuperaNumero();
};

Eu crio uma conta chamando: Conta umaConta("1",Titular(Cpf("111.111.111.11"), "Fulano1"));

Ou seja, o Cpf esta sendo armazenado na class Cpf (que possui suas validações nele), o Titular em seu construtor recebe Cpf(cpf) e o nome da pessoa.

Para sacar dessa conta por exemplo eu uso umaConta.sacar(100); pois não é uma função estática e faz parte do objeto.

Mas, como faço para recuperar o Cpf e o Nome do Titular? eles não aparecem no objeto umaConta, não consigo chamar pelas suas classes

No curso não explicou isso, alguém poderia me ajudar?

4 respostas

não sei se é a melhor solução, mas você pode criar uma outra função em Conta, chamado recuperaNome(), e nela chamar o recuperaNome do titular:

Conta.hpp

std::string recuperaNome() const;

Conta.cpp

std::string Conta::recuperaNome() const{
    return titular.recuperaNome();
}

Edit: acredito que possa ter outras opções para resolver o problema em outros cursos da formação em c++

Obrigado pela ajuda, mas, não funciona =[

Ah, acho que sei o que pode ter dado errado, o recuperaNome() do Conta é const, mas o do Titular não. Então quando o codigo compila o Conta.cpp ele não tem garantia de que o titular.recuperaNome() não vá mexer em nada. Se esse for o problema, da pra resolver colocando const no recuperaNome() do Titular também.

solução!

Resolvi o problema no curso: Orientação a Objetos com C++: trabalhando com herança