tracyhe123 Ответов: 3

Почему переменные не могут быть объявлены в операторе switch?


Я всегда задавался вопросом: почему вы не можете объявить переменные после метки case в операторе switch?

Что я уже пробовал:

Я всегда задавался вопросом: почему вы не можете объявить переменные после метки case в операторе switch?

3 Ответов

Рейтинг:
1

User 7429338

Посмотрите здесь, где кто-то задал точно такой же вопрос слово в слово:

c++ - почему переменные не могут быть объявлены в операторе switch? - переполнение стека[^]


Рейтинг:
1

Richard MacCutchan

Вы уже задавали этот вопрос по адресу Почему переменные не могут быть объявлены в операторе switch - дискуссионные доски C / C++ / MFC[^Пожалуйста, не делайте репостов.


Рейтинг:
0

KarstenK

Препостеры правы, но за исключением того, когда вы открываете новый scop с фигурными скобками. Но эта вариабель живет, конечно, только в этом объеме.

switch( ... )
{
  case 0:
   break:
  case 1:
  {  //new scope
    SomeFancyObject obj;
  } //end scope
   break;
} 
Чтобы работать с этим ограничением, вы можете объявить указатель перед переключателем и создать экземпляр внутри него.
SomeFancyObject *obj = nil;//a pointer!!!
switch( ... )
{
  case 0:
   break:
  case 1:
   obj = SomeFancyObject;
   //work on obj !!!
   break;
}