1
resposta

Tenho uma pequena duvida, como acessar um membro da classe Titular ?

Como posso acessar um membro da classe Titular atraves do Objeto do tipo Conta, se dentro da classe conta o objeto Titular é private?

private:
std::string numeroConta;
float saldo;
Titular titular;

Escrevi o código abaixo, porem só funciona se o objeto for public.

cout << "Nome das contas:" << umaConta.titular.recuperaNome() << " e " << umaOutraConta.titular.recuperaNome() << endl;
1 resposta

Na orientação a objetos é uma boa prática você sempre declarar os atributos como privados e criar métodos públicos para manipular esses atributos ex:

#include <iostream>
#include <string>

class Carro {
private:
    std::string marca;
    int ano;

public:
    // Construtor
    Carro(std::string m, int a) {
        marca = m;
        ano = a;
    }

    // Método Getter para a marca
    std::string getMarca() {
        return marca;
    }

    // Método Setter para a marca
    void setMarca(std::string m) {
        marca = m;
    }

    // Método Getter para o ano
    int getAno() {
        return ano;
    }

    // Método Setter para o ano (com validação, por exemplo)
    void setAno(int a) {
        if (a > 1900 && a <= 2025) { // Exemplo de validação
            ano = a;
        } else {
            std::cout << "Ano inválido!" << std::endl;
        }
    }

    void exibirInfo() {
        std::cout << "Marca: " << marca << ", Ano: " << ano << std::endl;
    }
};

int main() {
    Carro meuCarro("Ford", 2020);
    meuCarro.exibirInfo();

    // Não podemos acessar diretamente: meuCarro.marca = "Fiat"; // Erro! 'marca' é private

    // Usando os métodos Setter e Getter
    meuCarro.setMarca("Chevrolet");
    meuCarro.setAno(2023);
    meuCarro.exibirInfo();

    meuCarro.setAno(1800); // Exemplo de validação
    meuCarro.exibirInfo();

    std::cout << "Marca do meu carro: " << meuCarro.getMarca() << std::endl;

    return 0;
}