Форум программистов, компьютерный форум CyberForum.ru

Чудо-ошибка в операторе switch - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 4.00
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.05.2014, 12:00     Чудо-ошибка в операторе switch #1
простой кусок кода, если case 2: переместить с конца оператора немнго вперед.т.е. поменять местами с 1 из case x:, то компилятор выдает:
||=== Build: Debug in serg_Kov_249_6 (compiler: GNU GCC Compiler) ===|
D:\Documents\CodeBlocks\serg_Kov_249_6\main.cpp||In function 'int main()':|
D:\Documents\CodeBlocks\serg_Kov_249_6\main.cpp|41|error: jump to case label [-fpermissive]|
D:\Documents\CodeBlocks\serg_Kov_249_6\main.cpp|38|error: crosses initialization of 'vec C'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

конструктор копирования есть, ругается именно при его наличии
в чём причина такого поведения понять не могу... Гуру С++ прошу вашей помощи, мне интересно в чем я не прав...
C++
1
vec(const vec &t):x1(t.x1),y1(t.y1),z1(t.z1),dl(t.dl){};// вставлял сюда explicit уже от безысходности
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 switch(x)
        {
        case -1:
          flag=false;;
        break;
        case 3:
          cout<<A*B;
        break;
        case 4:
          find_cos(A,B);
        break;
        case 2:
          vec C(A-B);
          C.show();
        break;
        case 1:
          A+B;
        break;
        }
Вложения
Тип файла: rar serg_Kov_249_6.rar (238.5 Кб, 4 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:11     Чудо-ошибка в операторе switch #2
C++
1
2
3
4
{
vec C(A-B);
C.show();
}
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.05.2014, 12:14  [ТС]     Чудо-ошибка в операторе switch #3
эм....и...?) я знаю что она там.....)
Добавлено через 28 секунд
Цитата Сообщение от dzrkot Посмотреть сообщение
конструктор копирования есть, ругается именно при его наличии
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:19     Чудо-ошибка в операторе switch #4
Фигурные скобки тебе помогут.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.05.2014, 12:21  [ТС]     Чудо-ошибка в операторе switch #5
Цитата Сообщение от castaway Посмотреть сообщение
Фигурные скобки тебе помогут.
Цитата Сообщение от dzrkot Посмотреть сообщение
vec(const vec &t):x1(t.x1),y1(t.y1),z1(t.z1),dl(t.dl){};
в конустркторе они есть ... или что-то другое имеется ввиду....?)
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:27     Чудо-ошибка в операторе switch #6
Чудо-ошибка в операторе switch - фигурные скобки видишь?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.05.2014, 12:31  [ТС]     Чудо-ошибка в операторе switch #7
если имелось ввиду так(см.ниже) то да оно заработало, но японский бог, в чём смысл этого... мне интересно
всегда использовал без {} в case :break; и проблем не возникало..
....
C++
1
2
3
4
5
case 2:
    {
    vec C(A-B);
    C.show();
    }
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:42     Чудо-ошибка в операторе switch #8
x == 2, переменная C определена в скопе.
x != 2, переменная не определена в скопе.
Такая неопределенность недопустима.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.05.2014, 12:44  [ТС]     Чудо-ошибка в операторе switch #9
Цитата Сообщение от castaway Посмотреть сообщение
x == 2, переменная C определена в скопе.
x != 2, переменная не определена в скопе.
Такая неопределенность недопустима.
вроде понял, спасибо)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.05.2014, 12:47     Чудо-ошибка в операторе switch #10
Почему в switch нельзя определять переменные?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
27.05.2014, 12:57     Чудо-ошибка в операторе switch #11
Пример для тех, кто не догадался, и области видимости:
C++
1
2
3
4
5
6
7
8
9
switch( 1 )
  {
  case 1:
    int i=0;
    i = 1;
    break;
  case 2:
    break;
  }
Заместо объяснения: Как работает оператор switch в Си/Си++
dzrkot
27.05.2014, 13:04  [ТС]
  #12

Не по теме:

да чет блин даже обидно, на такие детские грабли наступил первый раз)

SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
27.05.2014, 13:05     Чудо-ошибка в операторе switch #13
dzrkot, много мало не бывает. Лучше со скобками иной раз переборщить, чем недоборщить.
Croessmah
27.05.2014, 13:07
  #14

Не по теме:

Цитата Сообщение от dzrkot Посмотреть сообщение
на такие детские грабли наступил первый раз
наступить на детские грабли больнее, чем на обычные

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2014, 13:11     Чудо-ошибка в операторе switch
Еще ссылки по теме:

Как в операторе switch вместо числового значения case поставить, например, слово? C++
В операторе switch всегда срабатывает default C++
Где ошибка в switch C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dzrkot
27.05.2014, 13:11  [ТС]     Чудо-ошибка в операторе switch
  #15

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
наступить на детские грабли больнее, чем на обычные

Yandex
Объявления
27.05.2014, 13:11     Чудо-ошибка в операторе switch
Ответ Создать тему
Опции темы

Текущее время: 23:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru