#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. Спасибо! это мой второй раз, когда я прохожу этот курс, и заголовочные файлы никогда не имели для меня смысла-очень полезно