Попытка доступа к переменным частного класса в функции заголовка

#c #class #header-files

#c #класс #заголовочные файлы

Вопрос:

Мне нужно несколько функций в файле заголовка, которые используются std::cout для указания даты, но я не знаю, как получить к ним доступ из файла заголовка. Если бы я был в классе, я мог бы просто сказать что-то вроде:

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

Однако, поскольку я получаю доступ к месяцу, дню и году (которые являются частными в моем файле .cpp), Я не уверен, как изменить их из функций void в файле реализации. Вот весь код:

объявления даты.h

 #ifndef DATECLASS_H #define DATECLASS_H  class dateclass {  private:  int month;  int day;  int year;  public:  //default constructor  dateclass()  {  month = 1;  day = 1;  year = 1;  }  //value constructor  dateclass(int month, int day, int year)   {  this-gt;month = month;  this-gt;day = day;  this-gt;year = year;  }  void DisplayStandard();    }; #endif  

dateclasses.cpp

 #include "dateclass.h" #include lt;iostreamgt;  using namespace std;  void DisplayStandard() {  cout lt;lt; "Date: " lt;lt; month lt;lt; "/" lt;lt; day lt;lt; "/" lt;lt; year lt;lt; endl; }   

Мне еще предстоит настроить основную функцию, хотя я не думаю, что это необходимо для этого

Комментарии:

1. void DisplayStandard() { ... } определяет функцию, не являющуюся членом. Как в вашей книге или учебнике говорится, что определена функция-член класса?

2. Используется dateclass::DisplayStandard для ссылки на функцию-член.

Ответ №1:

Вы можете решить эту проблему, изменив void DisplayStandard() ее на void dateclass::DisplayStandard() , как показано ниже

 void dateclass::DisplayStandard()//note the dateclass:: added infront of DisplayStandard {  cout lt;lt; "Date: " lt;lt; month lt;lt; "/" lt;lt; day lt;lt; "/" lt;lt; year lt;lt; endl; }   

Комментарии:

1. Спасибо! это мой второй раз, когда я прохожу этот курс, и заголовочные файлы никогда не имели для меня смысла-очень полезно