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.
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í:
Luego, en el archivo de implementación, puedes usar estas funciones para acceder a las variables privadas de la siguiente manera:
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.