es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando acceder a las variables de clase privada en una función de encabezado

Necesito varias funciones en un archivo de encabezado que usen std::cout para mostrar la fecha, pero no sé cómo acceder a ellas desde el archivo de encabezado. Si estuviera dentro de la clase, podría simplemente decir algo como:

 void  DisplayStandard()
    {
        cout << month << "/" << day << "/" << year << endl;
    }

Sin embargo, como estoy accediendo a month, day y year (que son privados en mi archivo .cpp) no estoy seguro de cómo modificarlos desde funciones void en el archivo de implementación. Aquí está todo el código:

Archivo de encabezado dateclasses.h:

#ifndef DATECLASS_H
#define DATECLASS_H

class dateclass
{
    private:
        int month;
        int day;
        int year;
    public:
        //constructor predeterminado
        dateclass()
        {
            month = 1;
            day = 1;
            year = 1;
        }
        //constructor de valor
        dateclass(int month, int day, int year) 
        {
            this->month = month;
            this->day = day;
            this->year = year;
        }
        void DisplayStandard(); 

};
#endif

Archivo de implementación dateclasses.cpp:

#include "dateclass.h"
#include <iostream>

using namespace std;

void DisplayStandard()
{
    cout << "Fecha: " << month << "/" << day << "/" << year << endl;
}   

Todavía no he configurado la función principal, aunque no creo que sea necesario para esto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder a variables privadas como mes, día y año desde funciones void en el archivo de implementación, puedes crear funciones getter para cada una de ellas en la definición de clase dentro del archivo de encabezado. Se verían algo así:

    int GetMonth() const {
        return month;
    }
    
    int GetDay() const {
        return day;
    }
    
    int GetYear() const {
        return year;
    }
    

    Luego, en el archivo de implementación, puedes usar estas funciones para acceder a las variables privadas de la siguiente manera:

    #include "dateclass.h"
    #include <iostream>
    
    void dateclass::DisplayStandard() {
        std::cout << "Fecha: " << GetMonth() << "/" << GetDay() << "/" << GetYear() << std::endl;
    }
    

    De esta manera, las variables privadas solo son accesibles dentro de la clase, pero puedes usar las funciones getter para recuperarlas y usarlas en otras funciones dentro del archivo de implementación.

Comments are closed.