Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
1

Работа с объектом.

17.01.2011, 03:27. Показов 1546. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
struct time
{
int hours;
int mituts;
}
 
class pet
{
    char name[10];
    int years_old;
}
 
class day
{
    pet dog;
    
    public:
    time today;
  
    day(int h, int m)
    {
        today.minutes = m; // 1) правильная ли инициазация структуры?
        today.hours = h;
    }
}
 
day friday;
 
// 2) правильно ли я обращаюсь к элементам структуры, находящимся в объекте:
fiday.today.minutes = 10;
 
//  3) Как инициализировать(руется) объект, находящийся внутри объекта? в моём коде это time today;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2011, 03:27
Ответы с готовыми решениями:

Синхронная работа с объектом
Здравствуйте. Возможно ли работать с объектом одновременно в нескольких функциях/процессах, имея...

Работа с объектом через указатели
Всем привет, возникла необходимость работы с многочисленными объектами и их структурами - код...

Работа с классом и объектом Вектор
Являюсь студентом,и по долгу учебы приступил к обучению премудростям "оСей с двумя плюсами". И...

Работа с динамическим объектом
В чём ошибка? Исправьте пожалуйста :) for a := 1 to b do begin Shape:=...

17
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
17.01.2011, 03:30 2
1, 2 - да
так как вы задатите в конструкторе внешней структуры
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 03:39  [ТС] 3
вы наверное имели ввиду так, как задам в конструкторе внешнего класса? Получается я могу использовать лишь конструктор по-умолчанию и не могу передавать параметры?
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
17.01.2011, 03:54 4
FanAizu, где использовать?
тот вариант который у вас - правильный. Что не устраивает?
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 04:00  [ТС] 5
Не устраивает вот что, если нужно создать объект класса day, то для того, чтобы присвоить значения элементам класса нужно в классе объявить конструктор по-умолчанию, если не надо передавать никаких параметров, либо если нужно, то объявить еще один конструктор, который принимает параметры, чтобы инициализировать значения элементов класса. Ну а как инициализируется объект класса pet, находящийся внутри класса day??? То есть я хочу создать объект класса day и при этом проинициализировать находящийся внутри объект класс pet.
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
17.01.2011, 04:03 6
Цитата Сообщение от FanAizu Посмотреть сообщение
Ну а как инициализируется объект класса pet, находящийся внутри класса day???
всякая хунта будет в полях

можно написать
day(int h = 0, int m = 0)
{
today.minutes = m; // 1) правильная ли инициазация структуры?
today.hours = h;
}

получается одновременно и с параметрами и без
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 04:12  [ТС] 7
В представленном вами коде используются поля структуры. А мне нужно создать объект класса day внутри которого есть элемент класса pet. Так вот как объект класса pet, являющийся элементом класса day проинициализировать нужными значениями??
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
17.01.2011, 10:04 8
FanAizu, ты в своем коде проинициализировал объект класса time. что тебе мешает также проинициализировать объект класса pet?
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:13  [ТС] 9
Вы в ООП, извините, вообще шарите? Данные класса pet находятся в секцие private. Поэтому и придумали конструкторы, чтобы иметь доступ к защищенным данным. Если бы я создавал объект класса pet, то я бы в классе pet добавил бы конструктор по-умолчанию и конструктор, принимающий параметры. Но как мне проинициализировать объект, являющийся элементом класса??? И time это не класс, а структура.
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.01.2011, 17:28 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct time {
    int hours;
    int mituts;
}
 
class pet {
    char* name;
    int years_old;
public:
    pet(const char* Name = NULL, int Years = 0) : name(Name), years_old(Years) {}
}
 
class day {
    pet dog;
public:
    time today;
    day(int h, int m, const char* Name = NULL, int Years = 0) : today.minutes(m), 
                                                               today.hours(h), 
                                   dog(Name, Years) {}; 
};
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:40  [ТС] 11
Только дочитал сегодня про наследование классов. Получается, чтобы использовать объект в качестве элемента класса нужно использовать наследование? В таком случае почему вы не объявили, что класс pet является базовым по отношению к классу day? И почему в списке инициализаторов вы используете имя объекта, а не название класса? то есть не pet(Name, Years), а dog(Name, Years) .
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.01.2011, 17:44 12
Цитата Сообщение от FanAizu Посмотреть сообщение
Получается, чтобы использовать объект в качестве элемента класса нужно использовать наследование? В
не нужно, но так было бы лучше
Цитата Сообщение от FanAizu Посмотреть сообщение
В таком случае почему вы не объявили, что класс pet является базовым по отношению к классу day?
перечитайте свои посты, ты где нибудь упоминал о наследовании?

Цитата Сообщение от FanAizu Посмотреть сообщение
И почему в списке инициализаторов вы используете имя объекта, а не название класса? то есть не pet(Name, Years), а dog(Name, Years) .
учи мат.часть
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:48  [ТС] 13
Цитата Сообщение от Maxwe11 Посмотреть сообщение
учи мат.часть
То есть? Если можно и без наследования, то используя список инициализаторов можно передать аргументы конструктору? Если их не передавать, то будет вызван конструктор по умолчанию? И будут ли доступны метода этого объекта?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.01.2011, 17:50 14
Цитата Сообщение от FanAizu Посмотреть сообщение
Если их не передавать, то будет вызван конструктор по умолчанию?
да
Цитата Сообщение от FanAizu Посмотреть сообщение
И будут ли доступны метода этого объекта?
из вне - нет, внутри класса - да
1
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:56  [ТС] 15
Цитата Сообщение от Maxwe11 Посмотреть сообщение

из вне - нет, внутри класса - да
то есть я не смогу, как при наследование вызвать в программе унаследованные методы, а могу только внутри класса использовать их? В этом и заключается вся разница в использование наследования и объявление объекта, как элемента класса? И еще я не понял, что вы имели ввиду под учи мат. часть? То есть не понял почему вместо имени класса вы используете имя объекта, чтобы передать конструктору параметры?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.01.2011, 18:03 16
Цитата Сообщение от FanAizu Посмотреть сообщение
В этом и заключается вся разница в использование наследования и объявление объекта, как элемента класса?
да
Цитата Сообщение от FanAizu Посмотреть сообщение
То есть не понял почему вместо имени класса вы используете имя объекта, чтобы передать конструктору параметры?
потому что нам нужно иницилизировать конкретный объект dog, это сделано на тот случай если бы у тебя было несколько объектов petов внутри и каждый нужно было иницилизировать разными значениями
1
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 18:07  [ТС] 17
ясно, значит если бы я использовал наследование, то нужно было бы указывать имя класса, а не объекта?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.01.2011, 18:09 18
совершенно верно
0
17.01.2011, 18:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2011, 18:09
Помогаю со студенческими работами здесь

Работа с объектом Form
Здравствуйте, нужно чтобы при изменении размеров формы раздавался щелчок, а сами размеры выводились...

Работа с объектом Graphics
Добрый вечер. Данная программа компилируется без ошибок, однако я при запуске я не вижу холст для...

Работа с объектом Session
Ребята подскажите пожалуйста, как работать с объектом Session? На сайте...

Работа с Ole-объектом
В 1С:7.7 открывается вторая конфигурация командой Initialize Какой командой можно закрыть открытую...

Работа с объектом Chart
Добрый день! Дошел до момента, когда заполняю график курсами валют void chartDraw() { using...

Работа с объектом Date
Есть один объект date. В консоли через console.log(date) выводит мне: Sun Aug 31 2014 00:00:00...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru