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

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

Войти
Регистрация
Восстановить пароль
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
#1

[Error] variable-sized object 'stepsInMaze' may not be initialized - C++

25.03.2013, 16:17. Просмотров 903. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <windows.h>
#include <cstdlib>
 
struct point
{
    int x;
    int y;
};
 
int mazeTraverse( const int, const char[][12], point& );
 
int main() {
    const int size = 12;
    
    const char maze[size][size] = 
    { '#','#','#','#','#','#','#','#','#','#','#','#',
      '#','.','.','.','#','.','.','.','.','.','.','#',
      '.','.','#','.','#','.','#','#','#','#','.','#',
      '#','#','#','.','#','.','.','.','.','#','.','#',
      '#','.','.','.','.','#','#','#','.','#','.','.',
      '#','#','#','#','.','#','.','#','.','#','.','#',
      '#','.','.','#','.','#','.','#','.','#','.','#',
      '#','#','.','#','.','#','.','#','.','#','.','#',
      '#','.','.','.','.','.','.','.','.','#','.','#',
      '#','#','#','#','#','#','.','#','#','#','.','#',
      '#','.','.','.','.','.','.','#','.','.','.','#',
      '#','#','#','#','#','#','#','#','#','#','#','#'
    };
    point pos;
    pos.x = 4;
    pos.y = 11;
    mazeTraverse( size, maze, pos );
    return 0;
}
 
int mazeTraverse( const int size, const char maze[][12], point &pos ) {
    
    static int stepsInMaze[size][size] = { 0 }; //вот  здесь ошибку видает
    stepsInMaze[pos.x][pos.y] = 1;
    
    for( int x = 0; x < size; x++, std::cout << std::endl ) {
        for( int y = 0; y < size; y++ ) {
            if( (x == pos.x) && (y == pos.y) ) {
                std::cout << "X";
            } else {
                std::cout << maze[x][y];
            }
        }
    }
    
    std::cout << "X: " << pos.x << " Y: " << pos.y;
    std::cout << " maze: " << pos.x - 1;
    std::system( "PAUSE > NULL" ); 
    
    if( (maze[pos.x - 1][pos.y] != '#') && (!stepsInMaze[pos.x - 1][pos.y]) )
        pos.x -= 1;
        
    if( (maze[pos.x][pos.y - 1] != '#') && (!stepsInMaze[pos.x][pos.y - 1]) )
        pos.y -= 1;
        
    if( (maze[pos.x][pos.y + 1] != '#') && (!stepsInMaze[pos.x][pos.y + 1]) )
        pos.y += 1;
    
    
    Sleep( 100 );
    std::system( "cls" );
    
    mazeTraverse( maze, pos, size );
}
Помогите пожалуйста... Первый раз с такой ошибкой встретился.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2013, 16:17     [Error] variable-sized object 'stepsInMaze' may not be initialized
Посмотрите здесь:

C++ The variable 'pp' is being used without being initialized
Run-Time Check Failure #3 - The variable 'i' is being used without being initialized C++
Run-Time Chel Failure #3 - The variable 'dl' is being used without being initialized C++
C++ The variable 'kvadrat' is being used without being initialized
The variable 'x' is being used without being initialized C++
C++ The variable 'x' is being used without being initialized
C++ The variable 'x' is being used without being initialized
C++ The variable 'tc' is being used without being initialized
C++ Run-Time Check Failure #3 - The variable 'k' is being used without being initialized
C++ Run-Time Check Failure #3 - The variable 'c' is being used without being initialized
C++ The variable 'str' is being used without being initialized
Run-Time Check Failure #3 - The variable 'v' is being used without being initialized C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 2
Завершенные тесты: 1
25.03.2013, 16:20     [Error] variable-sized object 'stepsInMaze' may not be initialized #2
size должен быть известен в процессе компиляции, а не просто быть const.
Используйте динамическую память тогда
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
25.03.2013, 16:34  [ТС]     [Error] variable-sized object 'stepsInMaze' may not be initialized #3
ну я сделаю статический указатель static int **stepsInMaze, а потом проинициализирую массив нулями. Проблема в том, что мне нужно только при первом запуске функции это сделать
Вот, что я написал
C++
1
2
3
4
5
6
7
8
static int **stepsInMaze = new int *[size];
    
    for( int i = 0; i < size; i++ )
        stepsInMaze[i] = new int[size];
    
    for( int i = 0; i < size; i++ )
        for( int j = 0; j < size; j++ )
            stepsInMaze[i][j] = 0;
Оно же будет при каждом запуске функции массив обнулять, верно? Или просто сделать все счетчики цикла тоже статик?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 2
Завершенные тесты: 1
25.03.2013, 16:37     [Error] variable-sized object 'stepsInMaze' may not be initialized #4
Не хорошо так делать, но:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int ** foo(int size){
    int **stepsInMaze = new int *[size];    
    for( int i = 0; i < size; i++ )
        stepsInMaze[i] = new int[size];    
    for( int i = 0; i < size; i++ )
        for( int j = 0; j < size; j++ )
            stepsInMaze[i][j] = 0;
     return stepsInMaze;
}
//...
int mazeTraverse( const int size, const char maze[][12], point &pos ) {    
    static int ** stepsInMaze = foo(size);
Yandex
Объявления
25.03.2013, 16:37     [Error] variable-sized object 'stepsInMaze' may not be initialized
Ответ Создать тему
Опции темы

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