Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
1

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

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

Вот код:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 03:27
Ответы с готовыми решениями:

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

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

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

Проблема с объектом string
Всем привет! Таким образом передаю текст объекту string: string str ; sscanf(...

Возвращение объектом значения
Привет всем. Работал я тут на днях с классом fstream и увидал классную штуку,...

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

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

получается одновременно и с параметрами и без
0
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 04:12  [ТС] 7
В представленном вами коде используются поля структуры. А мне нужно создать объект класса day внутри которого есть элемент класса pet. Так вот как объект класса pet, являющийся элементом класса day проинициализировать нужными значениями??
0
sandye51
программист С++
833 / 592 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
17.01.2011, 10:04 8
FanAizu, ты в своем коде проинициализировал объект класса time. что тебе мешает также проинициализировать объект класса pet?
0
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:13  [ТС] 9
Вы в ООП, извините, вообще шарите? Данные класса pet находятся в секцие private. Поэтому и придумали конструкторы, чтобы иметь доступ к защищенным данным. Если бы я создавал объект класса pet, то я бы в классе pet добавил бы конструктор по-умолчанию и конструктор, принимающий параметры. Но как мне проинициализировать объект, являющийся элементом класса??? И time это не класс, а структура.
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
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
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:40  [ТС] 11
Только дочитал сегодня про наследование классов. Получается, чтобы использовать объект в качестве элемента класса нужно использовать наследование? В таком случае почему вы не объявили, что класс pet является базовым по отношению к классу day? И почему в списке инициализаторов вы используете имя объекта, а не название класса? то есть не pet(Name, Years), а dog(Name, Years) .
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 17:44 12
Цитата Сообщение от FanAizu Посмотреть сообщение
Получается, чтобы использовать объект в качестве элемента класса нужно использовать наследование? В
не нужно, но так было бы лучше
Цитата Сообщение от FanAizu Посмотреть сообщение
В таком случае почему вы не объявили, что класс pet является базовым по отношению к классу day?
перечитайте свои посты, ты где нибудь упоминал о наследовании?

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

из вне - нет, внутри класса - да
то есть я не смогу, как при наследование вызвать в программе унаследованные методы, а могу только внутри класса использовать их? В этом и заключается вся разница в использование наследования и объявление объекта, как элемента класса? И еще я не понял, что вы имели ввиду под учи мат. часть? То есть не понял почему вместо имени класса вы используете имя объекта, чтобы передать конструктору параметры?
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 18:03 16
Цитата Сообщение от FanAizu Посмотреть сообщение
В этом и заключается вся разница в использование наследования и объявление объекта, как элемента класса?
да
Цитата Сообщение от FanAizu Посмотреть сообщение
То есть не понял почему вместо имени класса вы используете имя объекта, чтобы передать конструктору параметры?
потому что нам нужно иницилизировать конкретный объект dog, это сделано на тот случай если бы у тебя было несколько объектов petов внутри и каждый нужно было иницилизировать разными значениями
1
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 18:07  [ТС] 17
ясно, значит если бы я использовал наследование, то нужно было бы указывать имя класса, а не объекта?
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 18:09 18
совершенно верно
0
17.01.2011, 18:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 18:09

Возврат значения объектом класса
Может ли экземпляр класса возвращать значение своего поля без обращения к полю...

Время приобретения объектом константности
Всем привет Есть такая ситуация: // Функция: void someFunc(const...

Задача на строки, с объектом класса string
Дано осмысленное текстовое сообщение, разделенное пробелами и знаками...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru