1 / 1 / 0
Регистрация: 08.07.2012
Сообщений: 83
|
||||||
1 | ||||||
Как проинициализировать структурную переменную в конструкторе класса?02.07.2014, 20:34. Показов 1105. Ответов 8
Метки нет (Все метки)
К примеру у меня есть переменная p типа POINT. Такую запись он считает нелегальной:
0
|
02.07.2014, 20:34 | |
Ответы с готовыми решениями:
8
проинициализировать строку в конструкторе Как повторно проинициализировать переменную конструктором? Как проинициализировать static поле класса? Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса? |
34 / 34 / 21
Регистрация: 02.02.2012
Сообщений: 181
|
||||||
02.07.2014, 20:54 | 2 | |||||
0
|
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
|
|
02.07.2014, 20:55 | 3 |
Может быть стоит сначала вызвать конструктор типа POINT, а затем уже вызывать конструктор MyClass ?
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
02.07.2014, 21:01 | 4 | |||||
Конструктор POINT вызывается автоматически, т.к. объект этого типа является полем класса.
Другое дело - ЧТО есть в этом конструкторе POINT. Может он вообще сгенерирован по умолчанию, т.е. не происходит никакой инициализации полей. Если POINT это обычная структура, то достаточно самого простого варианта:
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
||||||
02.07.2014, 21:16 | 5 | |||||
007imran007,
И все же это уже присваивание, а не инициализация, если не ошибаюсь. Ведь в теле конструктора класса, конструкторы всех его полей УЖЕ вызваны и проработали.
1
|
18896 / 9854 / 2410
Регистрация: 30.01.2014
Сообщений: 17,297
|
||||||
02.07.2014, 21:56 | 7 | |||||
gromo, с точки зрения С++11 твой вариант с uniform initialization самый правильный.
В более ранних версиях два варианта, либо, если это возможно, делаем в Point конструктор, либо используем вариант с присваиванием, т.к. для POD действительно нет никакой разницы. Добавлено через 8 минут Если просто нужны нули, то достаточно сделать так:
1
|
1 / 1 / 0
Регистрация: 08.07.2012
Сообщений: 83
|
||||||
03.07.2014, 09:59 [ТС] | 8 | |||||
Отказывается от вашего варианта...не могу понять почему
Добавлено через 16 минут но принимает присваивание: { p.x = 0; p.y = 0; } и не до конца понял, почему мой вариант (который всегда работал и как я читал является абсолютной копией вышенаписанного) не работает:
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
03.07.2014, 10:58 | 9 |
Вероятная причина:
0
|
03.07.2014, 10:58 | |
03.07.2014, 10:58 | |
Помогаю со студенческими работами здесь
9
Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса) Сколько памяти выделяется под структурную переменную Как задать размер матрицы в конструкторе класса? Как инициализровать константное поле класса в конструкторе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |