|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.05.2011, 19:38 | #1 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Инициализация константным массивом
Добрый день,
с c# можно написать вот так, например: Код:
Код:
|
18.05.2011, 20:12 | #2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Можно, но только в стандарте C++0x. Для этого в качестве параметра нужно указывать std::initializer_list<T>.
Код:
|
18.05.2011, 20:18 | #3 | |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Цитата:
Код:
|
|
18.05.2011, 20:49 | #4 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Вот примерный код того, что у меня сейчас есть:
Код:
|
18.05.2011, 21:00 | #5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Совершенно верно, я пропустил квадратные скобки.
Боюсь, без использования доп. массива никак это не сделать. Так как даже стандартные контейнеры для инициализации используют их (но в новом стандарте реализована инициализация также и через initializer_list). Код:
Код:
Последний раз редактировалось netrino; 18.05.2011 в 21:04. |
18.05.2011, 21:25 | #6 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Да, видел такую инициализацию вектора.
В общем, я как раз старался минимизировать количество кода в пользовательском классе. Забил на инициализацию константным массивом, решил сделать так: Код:
|
18.05.2011, 21:45 | #7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Кстати, вызвать конструктор членов класса можно так:
Код:
Если Вы хотите конструировать keys в своём конструкторе (без получения данных извне) и для Вас не столь важна его инициализация конкретно массивом, то можно перегрузить для ProxyKeys и Values оператор << и производить инициализацию так Код:
|
18.05.2011, 22:30 | #8 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Спасибо за замечание На этот случай добавлю еще инициализацию строкой через конструктор.
А можно подробнее про накладные расходы? Какие именно? Ну а что касается неочевидного решения, то это не есть какая-то трагедия. Это же всего лишь диплом. В любом случае, я оставил для этого шаблона и другие способы инициализации, просто со строкой наиболее короткий, пусть и неочевидный. С перегрузкой оператора << хорошая идея, даже в голову не приходило, обязательно предусмотрю такой вариант. |
18.05.2011, 23:53 | #9 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Я имел ввиду накладные расходы в виде выделения и конвертирования числа из строчного типа в численный, Вы ведь собираетесь как-то работать с переданными числами. Безусловно, это не столь трагично, просто замечание, так как мне не нравится такой способ, но дело Ваше
|
19.05.2011, 02:02 | #10 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
А, ну если это, тогда ясно. Мне, конечно, тоже это не греет душу, но экземляр класса будет единожды создаваться, поэтому это не трагедия
Спасибо за помощь. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
инициализация массива | parazzzitka93 | Общие вопросы C/C++ | 11 | 02.04.2011 21:01 |
Инициализация | Aleksey1989 | Общие вопросы Delphi | 10 | 11.09.2010 21:50 |
Ошибка инициализация | Krumyura | Общие вопросы C/C++ | 2 | 22.03.2010 14:08 |
Инициализация | Krumyura | Общие вопросы C/C++ | 5 | 20.03.2010 23:37 |
Инициализация DirectX | Pedro | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 30.09.2009 21:06 |