Форум программистов, компьютерный форум CyberForum.ru

Работа с объектами - C++

Восстановить пароль Регистрация
 
korsarqa
 Аватар для korsarqa
7 / 7 / 0
Регистрация: 06.12.2011
Сообщений: 170
25.12.2012, 20:14     Работа с объектами #1
Здравствуйте, делаю курсовую по работе с датами, их вычитанием и сложением.

Вообще в начале у меня идет процесс инициализации даты, где в конце кода создается объект
C++
1
Date* a=new Date(year1,month1,day1,hour1,min1,sec1);
Мы передаем полученные переменные в конструктор который имеет следующий код

C++
1
2
3
4
5
6
7
8
9
Date::Date(int y=0, int mon=0, int d=0, int h = 0, int m = 0, int s = 0)
{
    year=y;
    month=mon;
    day=d;
    hour=h;
    min=m;
    sec=s;
}
Далее у меня создается функция прибавления к дате указанного числа дней, месяцев и т.д.
Вопрос: как можно с конструктора взять значения этих переменных - year,month,day etc
Пробовал так:
C++
1
2
3
Date* a
int y;
y=a->year;
Вызывается ошибка, что переменная недоступна
Переменные year month,day... находятся в классе Date в private
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 20:14     Работа с объектами
Посмотрите здесь:

Работа с объектами классов C++
C++ Работа с объектами внутри класса.
C++ Работа с объектами типа string
C++ Работа с объектами. Код вылетает сразу после инициализации элементов массива
Работа с объектами класса: вывод на консоль, подсчет суммы C++
Правильное использование переменных, работа с объектами C++
C++ Работа с объектами в С++
C++ Классы. Работа с объектами типа массив

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nagdiel
 Аватар для Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
25.12.2012, 21:29     Работа с объектами #2
1) Поля объявленные в private секции класса напрямую недоступны, чтобы получить к ним доступ нужно создать какой нибудь-метод, например
C++
1
int Date::getYear () {return year;}
Метод должен быть объявлен в public секции.

2) Запись
C++
1
Date* a;
означает объявление указателя на класс Date. Соответсвующий объект при этом не создается, поля объекта не инициализируются. Для создания объекта необходимо использовать оператор new, примерно так

C++
1
2
3
Date* a = new Date(/*здесь значения параметров класса в соответствии с синтаксисом конструктора*/); 
// или 
Date *a = new Date(); // В этом случае поля объекта инициализируется значениями по умолчанию (в нашем случае это нули) //
После этого можно получить доступ к полям объекта:

C++
1
int y = a->getYear()
Yandex
Объявления
25.12.2012, 21:29     Работа с объектами
Ответ Создать тему
Опции темы

Текущее время: 00:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru