Где мне разместить константы, необходимые моему классу, чтобы освободить глобальное пространство?

Во-первых: я знаю, как писать программу, поэтому я не прошу помощи с этим. Однако я вставляю копию проблемы, чтобы вы могли видеть, что влечет за собой задание. Мой вопрос конкретно нацелен на то, где вы размещаете переменные, чтобы не сделать все глобальным?

Назначение

Создайте класс с именем Date, который имеет целые элементы данных для хранения месяца, дня и года. Класс должен иметь конструктор по умолчанию с тремя параметрами, который позволяет устанавливать дату во время создания нового объекта Date. Если пользователь создает объект Date без передачи каких-либо аргументов или если какое-либо из переданных значений недопустимо, следует использовать значения по умолчанию 1, 1, 2001 (т.е. 1 января 2001 года). Класс должен иметь функции-члены для печати даты в следующих форматах:

3/15/10
March 15, 2010
15 March 2010

Вопросы

1) Учитель проинструктировал нас избегать использования магических чисел в нашем коде, поэтому первый вопрос касается моей реализации конструктора по умолчанию :

// These are outside the class.
#define DEFAULT_MONTH 1
#define DEFAULT_DAY   1
#define DEFAULT_YEAR  2001

// This is inside the class definition.
Date(int month = DEFAULT_MONTH, int day = DEFAULT_DAY, int year = DEFAULT_YEAR);

Это правильно?

2) Классу нужен доступ к массиву объектов string , которые содержат названия месяцев, поэтому я могу использовать их для вывода даты, которая отображает название месяца вместо номер месяца. Я использовал перечисление для числового месяца (которое будет использоваться для переключателя ).

const enum MONTH_IDS { JANUARY = 1, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY,
    AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER };

const string MONTH_NAMES[NUM_MONTHS] = { "January", "February", "March",
    "April", "May", "June", "July", "August", "September", "October",
    "November", "December" };

Вопрос для этой части: где вы их размещаете?

Некоторые вещи, которые я не могу делать ... Мне пока не разрешено использовать статические члены класса, потому что это будет будет рассмотрено в следующей главе. Мы также не перебирали указатели, но можем использовать ссылки.

Спасибо за вашу помощь!

Я бы спросила инструктора, но его нет в городе и задание должно быть завтра.

5
задан Bill the Lizard 21 September 2012 в 17:29
поделиться