Форум программистов, компьютерный форум 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. Просмотров 973. Ответов 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 );
}
Помогите пожалуйста... Первый раз с такой ошибкой встретился.
0
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 'x' is being used without being initialized - C++
x,k,y,n - c этой ошибкой, почему?) я вроде все значения объявил, ввожу клавы, а потом провожу действия. Проверил так: Ввел просто 1...

The variable 'x' is being used without being initialized - C++
помогите пожалуйста, выдает ошибку The variable 'x' is being used without being initialized. как поправить? #include &quot;stdafx.h&quot; ...

The variable 'pp' is being used without being initialized - C++
В visual C++ 2008 EE создаю всё как надо ,в файле .cpp пишу вот такой текст программы: #include&lt;iostream&gt; #include&lt;cmath&gt; using...

The variable 'x' is being used without being initialized - C++
Доброго времени суток. Ничего не пойму почему вылазит эта ошибка? : #include &lt;iostream&gt; int main() { double x,y,a; ...

The variable 'tc' is being used without being initialized - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; using std::cout; using std::cin; using std::endl; int main() ...

The variable 'str' is being used without being initialized - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;iostream&quot; #include &quot;windows.h&quot; #include &quot;string&quot; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
25.03.2013, 16:20 #2
size должен быть известен в процессе компиляции, а не просто быть const.
Используйте динамическую память тогда
1
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
25.03.2013, 16:34  [ТС] #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;
Оно же будет при каждом запуске функции массив обнулять, верно? Или просто сделать все счетчики цикла тоже статик?
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
25.03.2013, 16:37 #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);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 16:37
Привет! Вот еще темы с ответами:

The variable 'kvadrat' is being used without being initialized - C++
Увы, глупые вопросы на сегодня не закончились. Имеется код: bool **kvadrat; **kvadrat = new bool*; for(int sch=0; sch&lt;n; sch++){ ...

Run-Time Check Failure #3 - The variable 'c' is being used without being initialized - C++
Вводится последовательность целых чисел. Для каждого числа последовательности проверить, представляют ли его цифры строго ...

Run-Time Check Failure #3 - The variable 'v' is being used without being initialized - C++
Mc Visual Studio 2010 C++ при построении таблицы выдает ошибку ...

Run-Time Check Failure #3 - The variable 's' is being used without being initialized - C++
Ребят в чем может быть косяк запарился уже. Выдает эту ошибку я хз что с ней делать:( #include &quot;stdafx.h&quot; #include&lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2013, 16:37
Ответ Создать тему
Опции темы

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