Ошибка case

Здравствуйте.. помогите пожалуйста, выдает почему то ошибку, вроде бы простой код, может я чего то не замечаю?
    do    {        key = _getch();        switch(key)        {            case '1':                /* ввод количества вершин */                crus("Введите количество вершин: ");                int N;                cin >> N;                /* ввод матрицы смежности */                crus("Введите матрицу смежности: ");                list** matrix = new list*[N - 1];                list** first = new list*[N - 1];                            break;            case '2':                                break;        }    }    while(key != 27);
выдает такую ошибкуerror C2360: initialization of 'first' is skipped by 'case' labelerror C2360: initialization of 'matrix' is skipped by 'case' label    помогите пожалуйста, вроде бы конструкция switch правильно использована..  
4 ответа

do    {        key = _getch();        switch(key)        {            case '1':             {                /* ввод количества вершин */                crus("Введите количество вершин: ");                int N;                cin >> N;                /* ввод матрицы смежности */                crus("Введите матрицу смежности: ");                list** matrix = new list*[N - 1];                list** first = new list*[N - 1];                            break;            }            case '2':                                break;        }    }    while(key != 27);
ты понимаешь что эти указатели невалидны вне свитча?


между кейсами нельзя объявлять переменные, либо вынеси за switch, либо
....case 1:{    int var1;}bread;case 2:{    int var2;}....


спасибо большое! раньше не знал этого момента(((


между кейсами нельзя объявлять переменные
Объявлять можно, инициализировать нельзя.