IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Switch-case, c++
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


почему сие не работает? о_О
компилятор выдаёт ошибку "Case bypasses initialization of a local variable"


int sel = 0;
bool exit = false;
do
{
cin >> sel;
switch (sel)
{
case 1 : TTriangle T1;TRectangle T2; break;

case 2 : T1.show_position();T2.show_position();break;


case 3 : T1.move_it(0,0);T2.move_it(0,0); break;

case 4 : IsIntersect(&T1,&T2);break;

case 5 : exit = true; break;
default : exit = true;
}
} while (!exit);


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Потому, что с точки зрения С++ вот этого делать нельзя:
       case 1 : TTriangle T1;TRectangle T2; break;
Смотри, что получается: ты при проходе с sel==1 инициализируешь переменные T1 и T2, а что будет при sel==2? При выходе из блока switch переменные T1 и T2 уничтожаются (для них автоматически вызывается деструктор), ибо они вышли из local scope - своей области видимости, а при следующем проходе ты "перепрыгиваешь" инициализацию, и начинаешь обращаться к методам неинициализированного экземпляра, что жестко пресекается компилятором...

Решение - вынести описание переменных перед блоком switch ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


ясно yes2.gif
спасибо


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.11.2020 23:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name