![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| matrlx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 20.9.2005 Репутация: нет Всего: 0 |
Ребята, помогите с вызовом конструктора с параметрами. Есть класс Самолетов. Я создаю массив классов строкой типа AirPlanes air[10]; Но надо вызвать конструктор с параметрами ... т.е. в случае без массива надо написать AirPlanes air(parametrs); Но в случае массива как написать надо?! AirPlanes air[10](parametrs); не работает! |
|||
|
||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Нет такой синтаксической конструкции, которая позволяет объявить массив объектов, не имеющих конструктора по умолчанию, т.е. без параметров.
Возможных выходов несколько: 1) Объявить в конструкторе значения параметров по-умолчанию, тогда именно они будут использованы при создании элементов массива:
2) Использовать не массив, а вектор (std::vector), тогда код может выглядеть следующим образом:
3) Инициализация не в конструкторе, а в функции типа Init... Наверное, есть и другие варианты. Не так давно в форуме уже обсуждался подобный вопрос, поищи. Это сообщение отредактировал(а) Earnest - 31.5.2006, 06:57 -------------------- ... |
||||
|
|||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
Или ещё можно AirPlan a[10]={ AirPlan(int, int),.....};
Это сообщение отредактировал(а) ptr - 31.5.2006, 07:42 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Да, так тоже можно, хотя не все компиляторы позволяют так написать для автоматического объекта. Кроме того, если самолоетов не 10, а 100 или 1000 ... копи-паст сломается раньше ...
-------------------- ... |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
На аутсорс индусам! -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
Можно еще так (с помощью локального класса):
|
|||
|
||||
| matrlx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 20.9.2005 Репутация: нет Всего: 0 |
Спасибо вам!
|
|||
|
||||
| SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: 3 Всего: 3 |
Earnest, а что такое "автоматический объект"?
-------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
Автоматический объект - иначе стековый объект - нестатический объект, создаваемый при вызове функции и уничтожаемый при выходе из нее. По-умолчанию все объекты в функции и так являются автоматическими, хотя теоретически можно использовать ключевое слово auto.
|
|||
|
||||
| SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: 3 Всего: 3 |
baronp, то есть неавтоматические объекты - это те, о создании и удалении которых мы должны сами заботиться (располагающиеся в динамической памяти)?
Это сообщение отредактировал(а) SaDFromSpb - 31.5.2006, 19:11 -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
вообщем да (кроме статических объектов - располагаются не в стеке, но заботиться об освобождении памяти не надо) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |