![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Tribunal |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
почему сие не работает? о_О
компилятор выдаёт ошибку "Case bypasses initialization of a local variable" int sel = 0; -------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Потому, что с точки зрения С++ вот этого делать нельзя:
case 1 : TTriangle T1;TRectangle T2; break;Смотри, что получается: ты при проходе с sel==1 инициализируешь переменные T1 и T2, а что будет при sel==2? При выходе из блока switch переменные T1 и T2 уничтожаются (для них автоматически вызывается деструктор), ибо они вышли из local scope - своей области видимости, а при следующем проходе ты "перепрыгиваешь" инициализацию, и начинаешь обращаться к методам неинициализированного экземпляра, что жестко пресекается компилятором... Решение - вынести описание переменных перед блоком switch ... |
Tribunal |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
ясно
![]() спасибо -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 13:31 |