![]() |
|
Модераторы: bsa |
![]()
|
|
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
Не понятна причина вот такого ограничения.
Почему можно присваивать значения переменной ab Но нельзя массиву? -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
| Чoо |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
правильно так:
а почему компилятор разрешает инициализировать ab для меня не совсем понятно. Но вообще, по умолчанию статические элемент ыкласса инициализируются нулем. Поэтому, смею предположить, что e[], поскольку это указатель, указывает на 0x00000000, а мы пытаемся заполнить память, которая еще не выделена. но я не уверен. Самому интересно даже стало почему так -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
||||
|
||||
| KuMa1104 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
Мда это уже вообще жуть. Как раз про это в книжке читаю. Давайте разберемся по порядку. вот так нельзя.
Как я понимаю обявления класса описывает как должен выглядеть обект но не создает его. Но добавляю спецификатор const и О чудо!! всё работает!!! Добавлено через 2 минуты и 1 секунду Вот только в чудеса я не верю. (Покрайне мере не в такие) что меняться. Почему указание что элемент данных являеться const. Позволяет написать такое ?
-------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||
|
|||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Добавлено через 51 секунду
без инициализатора объявление, с ним - определение.. Добавлено через 1 минуту и 22 секунды
некоторая уловка разрешенная стандартом.. |
||||||
|
|||||||
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
И вот так тоже нельзя
видимо по тойже причине. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
в новом стандарте это все позволено: http://www.open-std.org/JTC1/SC22/WG21/doc.../2008/n2756.htm
другое дело, что на данный момент, это реализовали только в EDG. ждем... |
|||
|
||||
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
Вот не совсем понял. Значит это просто фикция такая. И в действительности нету ни каких оснований. Для такого запрета????? Добавлено через 55 секунд Ох как мы синхронно сообщения пишем . я уж путаться начал. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
зы
кстати позавчера вышел релиз gcc-4.5.2. к концу 2010 года зашевелились-то как ;) Добавлено через 3 минуты и 4 секунды а в тестовой ветке, в версию 4.6.0 встроили поддержку Go: http://gcc.gnu.org/gcc-4.6/changes.html#go и еще реализовали Range-based for |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
причины для "разрешения" такой инициализации разные.. Добавлено через 50 секунд да.. это специально введено "нарушение" общей логики, для получения некоторых удобств.. Добавлено через 2 минуты и 12 секунд не заморачивайтесь над этим.. запомните что так бывает.. а вернетесь тогда, когда действительно понадобится (к тому времени, будем надеяться, уже новый стандарт будет, где подобные места немного разровнены ) |
|||
|
||||
| KuMa1104 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
Да почитал.
Но мне кажется что для меня это пока слишком глубаковато. Думаю если даже вдумчиво прочитаю многое ускользнет. Ох как это не похоже на родной C#(( Хорошо но я могу написать так
Я так понимаю это наиболее корректный способ. Добавлено через 2 минуты и 11 секунд я так понимаю что
это и естm инициализатор. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
для статической функции ? при определении вне класса.. Добавлено через 1 минуту и 15 секунд у Чoо в посту показан "наиболее корректный" способ.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
вот так еще можно:
http://liveworkspace.org/code/f068cd189356...a057a395bf44dd4 Добавлено через 2 минуты а мне enum{ ab = 7 }; привычнее. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а что gcc еще не поддерживает range based for loop ? или нa lws "старый" ? Добавлено через 1 минуту и 36 секунд "корректный" для инициализации статических членов.. a enum в данном случае сбоку.. Это сообщение отредактировал(а) mes - 18.12.2010, 01:10 |
|||
|
||||
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
Бр.. На это вообще пока смотреть жутко. Хорошо. Кажется смысл понял) -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |