Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
zzzZZZ...
526 / 357 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
1

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

27.05.2014, 12:00. Показов 681. Ответов 14
Метки нет (Все метки)

простой кусок кода, если 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;
        }
0
Вложения
Тип файла: rar serg_Kov_249_6.rar (238.5 Кб, 5 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2014, 12:00
Ответы с готовыми решениями:

C++, ошибка в операторе switch (case)
Доброго времени суток! Ребят, такая тема: в C++ начала изучать операторы switch, case. И вот у меня...

Условие в операторе switch
Всем привет, есть коД: switch(TYPE) { case 1: total = number1 + number2; ...

Убрать предупреждения на break в операторе switch(...)
Никак не пойму, как можно перекроить этот код: ...

В операторе switch всегда срабатывает default
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий срабатывает default,...

14
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
27.05.2014, 12:11 2
C++
1
2
3
4
{
vec C(A-B);
C.show();
}
1
zzzZZZ...
526 / 357 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
27.05.2014, 12:14  [ТС] 3
эм....и...?) я знаю что она там.....)
Добавлено через 28 секунд
Цитата Сообщение от dzrkot Посмотреть сообщение
конструктор копирования есть, ругается именно при его наличии
0
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
27.05.2014, 12:19 4
Фигурные скобки тебе помогут.
1
zzzZZZ...
526 / 357 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
27.05.2014, 12:21  [ТС] 5
Цитата Сообщение от castaway Посмотреть сообщение
Фигурные скобки тебе помогут.
Цитата Сообщение от dzrkot Посмотреть сообщение
vec(const vec &t):x1(t.x1),y1(t.y1),z1(t.z1),dl(t.dl){};
в конустркторе они есть ... или что-то другое имеется ввиду....?)
0
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
27.05.2014, 12:27 6
Чудо-ошибка в операторе switch - фигурные скобки видишь?
1
zzzZZZ...
526 / 357 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
27.05.2014, 12:31  [ТС] 7
если имелось ввиду так(см.ниже) то да оно заработало, но японский бог, в чём смысл этого... мне интересно
всегда использовал без {} в case :break; и проблем не возникало..
....
C++
1
2
3
4
5
case 2:
    {
    vec C(A-B);
    C.show();
    }
0
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
27.05.2014, 12:42 8
x == 2, переменная C определена в скопе.
x != 2, переменная не определена в скопе.
Такая неопределенность недопустима.
1
zzzZZZ...
526 / 357 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
27.05.2014, 12:44  [ТС] 9
Цитата Сообщение от castaway Посмотреть сообщение
x == 2, переменная C определена в скопе.
x != 2, переменная не определена в скопе.
Такая неопределенность недопустима.
вроде понял, спасибо)
0
Don't worry, be happy
17139 / 10015 / 1932
Регистрация: 27.09.2012
Сообщений: 24,929
Записей в блоге: 1
27.05.2014, 12:47 10
Почему в switch нельзя определять переменные?
1
Почетный модератор
Эксперт С++
5843 / 2852 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
27.05.2014, 12:57 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 в Си/Си++
0
dzrkot
27.05.2014, 13:04  [ТС]
  #12

Не по теме:

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

0
Почетный модератор
Эксперт С++
5843 / 2852 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
27.05.2014, 13:05 13
dzrkot, много мало не бывает. Лучше со скобками иной раз переборщить, чем недоборщить.
1
Croessmah
27.05.2014, 13:07
  #14

Не по теме:

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

0
dzrkot
27.05.2014, 13:11  [ТС]     Чудо-ошибка в операторе switch
  #15

Не по теме:

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

0
27.05.2014, 13:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2014, 13:11
Привет! Вот еще темы с ответами:

Как в операторе switch вместо числового значения case поставить, например, слово?
Как в операторе switch вместо числового значения case поставить, например слово, желательно на...

Может ли значение метки case в операторе switch быть числовым отрезком, или только константой?
Например, в Pascal возможна запись: ... Case a of 0..15: Write( a+7 ); ... Возможно ли...

Ошибка в операторе if
if (i+j&gt;=i*2) and (i+j&lt;=n+1) or (i+j&lt;=i*2) and (i+j&gt;=n+1) выдаёт ошибку в первой строчке...

Ошибка в операторе cin
#include &lt;iostream&gt; using namespace std; int main() { double a,b,c,x,F; cout &lt;&lt;...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.