Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
#1

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

17.01.2011, 03:27. Просмотров 690. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с объектом. (C++):

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

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

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

Проблема с объектом string - C++
Всем привет! Таким образом передаю текст объекту string: string str ; sscanf( "cyberforum.ru", "%s" , str.data() ); cout << "string...

Возврат значения объектом класса - C++
Может ли экземпляр класса возвращать значение своего поля без обращения к полю напрямую например class MyClass { int val = 5;...

Время приобретения объектом константности - C++
Всем привет Есть такая ситуация: // Функция: void someFunc(const std::vector<MyObj> objects); std::vector<MyObj>...

17
sandye51
программист С++
685 / 587 / 39
Регистрация: 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
программист С++
685 / 587 / 39
Регистрация: 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
программист С++
685 / 587 / 39
Регистрация: 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
программист С++
685 / 587 / 39
Регистрация: 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
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 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
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 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
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 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
17.01.2011, 17:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 17:56
Привет! Вот еще темы с ответами:

Разница между объектом и экземпляром класса - C++
Можете объяснить какая между этими понятиями разница?

Конструктор с параметром-объектом того же класса - C++
Была поставлена задача: определить конструктор с параметром-объектом того же класса, но я совсем не понимаю, что от меня требуется?...

Действие над объектом класса выполняет: - C++
Кому не сложно, помогите с тестом :)

Задача на строки, с объектом класса string - C++
Дано осмысленное текстовое сообщение, разделенное пробелами и знаками препинания, в конце ставится точка. Поменять слова в сообщении по...


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

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

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