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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 4.00
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
#1

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

27.05.2014, 12:00. Просмотров 389. Ответов 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;
        }
Вложения
Тип файла: rar serg_Kov_249_6.rar (238.5 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 12:00     Чудо-ошибка в операторе switch
Посмотрите здесь:

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

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

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

В операторе switch всегда срабатывает default - C++
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий срабатывает default, почему так? #define WINVER 0x0501 ...

Как в операторе switch вместо числового значения case поставить, например, слово? - C++
Как в операторе switch вместо числового значения case поставить, например слово, желательно на русском, и возможно ли это вообще? ...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:11     Чудо-ошибка в операторе switch #2
C++
1
2
3
4
{
vec C(A-B);
C.show();
}
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
27.05.2014, 12:14  [ТС]     Чудо-ошибка в операторе switch #3
эм....и...?) я знаю что она там.....)
Добавлено через 28 секунд
Цитата Сообщение от dzrkot Посмотреть сообщение
конструктор копирования есть, ругается именно при его наличии
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:19     Чудо-ошибка в операторе switch #4
Фигурные скобки тебе помогут.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
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
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:27     Чудо-ошибка в операторе switch #6
Чудо-ошибка в операторе switch - фигурные скобки видишь?
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
27.05.2014, 12:31  [ТС]     Чудо-ошибка в операторе switch #7
если имелось ввиду так(см.ниже) то да оно заработало, но японский бог, в чём смысл этого... мне интересно
всегда использовал без {} в case :break; и проблем не возникало..
....
C++
1
2
3
4
5
case 2:
    {
    vec C(A-B);
    C.show();
    }
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.05.2014, 12:42     Чудо-ошибка в операторе switch #8
x == 2, переменная C определена в скопе.
x != 2, переменная не определена в скопе.
Такая неопределенность недопустима.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
27.05.2014, 12:44  [ТС]     Чудо-ошибка в операторе switch #9
Цитата Сообщение от castaway Посмотреть сообщение
x == 2, переменная C определена в скопе.
x != 2, переменная не определена в скопе.
Такая неопределенность недопустима.
вроде понял, спасибо)
Croessmah
Модератор
Эксперт CЭксперт С++
13056 / 7319 / 816
Регистрация: 27.09.2012
Сообщений: 18,055
Записей в блоге: 3
Завершенные тесты: 1
27.05.2014, 12:47     Чудо-ошибка в операторе switch #10
Почему в switch нельзя определять переменные?
SatanaXIII
Супер-модератор
Эксперт С++
5603 / 2637 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 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
Супер-модератор
Эксперт С++
5603 / 2637 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 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
Еще ссылки по теме:

Ошибка в условном операторе - C++
Есть задача: создать класс, который бы имитировал стандартный тип данных int, но предупреждал о переполнении переменной (±2147483648). И...

Ошибка в операторе условия - C++
почему ругается на строчку с условием? объясните новичку #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() { ...

Ошибка кода (switch) - C++
Помогите пожалуйста. void __fastcall TForm1::Button1Click(TObject *Sender) { float x, y, k, r, s; int n, i; ...

Ошибка с оператором switch - C++
Добрый день! Я писала программу в VS2010, но потом появилась необходимость запустить программу в 2008. После запуска, она ругается на этот...

Switch где ошибка? - C++
Ошибки не выдает, но и не запускается. Ошибку найти не могу Т_Т Help) #include &lt;iostream&gt; using namespace std; int mine() { ...


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

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

Не по теме:

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

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

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