| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Проблемы с конструктором... |
| Автор: matrlx 31.5.2006, 04:13 |
| Ребята, помогите с вызовом конструктора с параметрами. Есть класс Самолетов. Я создаю массив классов строкой типа AirPlanes air[10]; Но надо вызвать конструктор с параметрами ... т.е. в случае без массива надо написать AirPlanes air(parametrs); Но в случае массива как написать надо?! AirPlanes air[10](parametrs); не работает! |
| Автор: Earnest 31.5.2006, 06:55 | ||||
| Нет такой синтаксической конструкции, которая позволяет объявить массив объектов, не имеющих конструктора по умолчанию, т.е. без параметров. Возможных выходов несколько: 1) Объявить в конструкторе значения параметров по-умолчанию, тогда именно они будут использованы при создании элементов массива:
2) Использовать не массив, а вектор (std::vector), тогда код может выглядеть следующим образом:
3) Инициализация не в конструкторе, а в функции типа Init... Наверное, есть и другие варианты. Не так давно в форуме уже обсуждался подобный вопрос, поищи. |
| Автор: ptr 31.5.2006, 07:41 |
| Или ещё можно AirPlan a[10]={ AirPlan(int, int),.....}; |
| Автор: Earnest 31.5.2006, 07:58 |
| Да, так тоже можно, хотя не все компиляторы позволяют так написать для автоматического объекта. Кроме того, если самолоетов не 10, а 100 или 1000 ... копи-паст сломается раньше ... |
| Автор: likehood 31.5.2006, 13:58 | ||
Можно еще так (с помощью локального класса):
|
| Автор: matrlx 31.5.2006, 14:37 |
| Спасибо вам! |
| Автор: SaDFromSpb 31.5.2006, 17:21 |
| Earnest, а что такое "автоматический объект"? |
| Автор: likehood 31.5.2006, 17:49 |
| Автоматический объект - иначе стековый объект - нестатический объект, создаваемый при вызове функции и уничтожаемый при выходе из нее. По-умолчанию все объекты в функции и так являются автоматическими, хотя теоретически можно использовать ключевое слово auto. |
| Автор: SaDFromSpb 31.5.2006, 19:07 |
| baronp, то есть неавтоматические объекты - это те, о создании и удалении которых мы должны сами заботиться (располагающиеся в динамической памяти)? |
| Автор: MAKCim 31.5.2006, 19:44 | ||
вообщем да (кроме статических объектов - располагаются не в стеке, но заботиться об освобождении памяти не надо) |