Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
1

Ошибка инициализации двумерного массива

22.01.2013, 15:42. Просмотров 914. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
//Нужен массив 3х3;
enum colorMap {null = 0, yellow, green, blue, violet, red };
class Foo
{
int map[2][2];
   Foo()
   {
        map[2][2] = {yellow,green,null,null,null,null,blue,violet,red};
   }
}
Выбивает ошибки(компилятор понятно какой):
Кликните здесь для просмотра всего текста

e:\source\visualstudio2008\project\phenomen\phenomen\source\ c_map.h(15) : error C2059: syntax error : '{'
e:\source\visualstudio2008\project\phenomen\phenomen\source\ c_map.h(15) : error C2143: syntax error : missing ';' before '{'
e:\source\visualstudio2008\project\phenomen\phenomen\source\ c_map.h(15) : error C2143: syntax error : missing ';' before '}'

Возможно статический массив не хочет переинициализироваться, но static const его делать нельзя, а предварительная инициализация это временный костыль !
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2013, 15:42
Ответы с готовыми решениями:

Ошибка инициализации двумерного массива в классе
Ошибка инициализации двумерного массива в классе Текст ошибки: Error 13 error C2536:...

Логическая ошибка инициализации двумерного массива
Если массив statistics инициализировать statistics = {0}; , то столбцы массива statistics (те,...

Шаблонная функция для инициализации двумерного массива
Вот так можно сделать функцию для иниц. двумерного массива типа int. int** CreateArray(int...

Вылет консоли при инициализации двумерного массива
В программе потребовался двумерный массив с размерами, задаваемыми пользователем. На этом же форуме...

8
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
22.01.2013, 15:44 2
попробуй поменять map[3][3], не путай индексацию и количество ячеек, ты пытаешься создать массив 2х2 и вставить в него 9 элеменов.
1
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
22.01.2013, 15:48  [ТС] 3
Цитата Сообщение от Alexxx7 Посмотреть сообщение
не путай индексацию и количество ячеек
Да, похоже именно это я перепутал, но как же от 0 до 2 = 3 ячейки

Новый код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
enum colorMap {null = 0, yellow, green, blue, violet, red };
const int n = 3;
const int m = 3;
 
class Map
{
private:
    int map[n][m];
    int mapFinish[n][m];
    int miniMap[4][2],mainMap[4][2];
     //
public:
    Map()
    {
        map[n][m] = {yellow,green,null,null,null,null,blue,violet,red};
    }
};


Ошибки те же.
0
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
22.01.2013, 15:55 4
Так попробуй


C++
1
map[n][m] = {{yellow,green,null},{null,null,null},{blue,violet,red}};
0
1449 / 786 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.01.2013, 16:00 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
enum colorMap {null = 0, yellow, green, blue, violet, red };
class Foo
{
    int map[2][2];
    Foo()
    {
        map[0][0] = null;
        map[0][1] = yellow;
        map[1][0] = green;
        map[1][0] = violet;
    }
};
Добавлено через 1 минуту
Это компилится не будет.
C++
1
2
3
4
map[n][m] = {{yellow,green,null},{null,null,null},{blue,violet,red}};
 
int ar[3];
ar = {1,2,3};  //не выйдет
1
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
22.01.2013, 16:01 6
так а можно на весь код глянуть и узнать какое задание?
0
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
22.01.2013, 16:03 7
Да, инициализировать можна только при объявлении, тоисть:
C++
1
 int map[n][m] = {{yellow,green,null},{null,null,null},{blue,violet,red}};
По другому с помощю циклов или ручками забивать.
1
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
22.01.2013, 16:19  [ТС] 8
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Да, инициализировать можна только при объявлении, тоисть:
А если это элемент класса, то только static const указывать?

Цитата Сообщение от Alexxx7 Посмотреть сообщение
так а можно на весь код глянуть и узнать какое задание?
Задание несколько великовато и это один из модулей.
Попробую пересказать что я пытаюсь сделать: нужен массив 3х3, заполненный 5 цветами и 4 пустыми клетками. Инициализация временное решения т.к. написание парсера отложено в долгий ящик!
Можно и ручками, но хотелось как то эстетичнее и проще все равно переписывать...

Добавлено через 2 минуты
yuron_477, Сделал твоим методом, еще вопрос по перечислению тип перечисления при присваивании определяется компилятором или на стадии присвоения в тип возвращаемого объекта?
0
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
22.01.2013, 18:11 9
Так вышло чтобы автоматически итерироватся по цветам) Если посидеть, можна лучше будет.
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
int main(){
 
    int i;
    
    const int n = 3, m = 3;
 
    struct Map{
        short green;
        short yellow;
        short violet;
        short blue;
        short red;
    }myMap;
 
    int map[n][m];
 
    //Указатель на первый цвет
    short * p = (short *)&myMap;
 
    const int size = sizeof(myMap) / sizeof(short);
 
    //Нумерация цветов
    for(i = 1; i <= size; i++){
         *p++ = i;
    }
 
    //Отмотаем указатель на начало
    p -= size;
 
    i = 0;
    //Формируем массив значениями цветов
    for(int s = 0; s < n; s++){
        for(int j = 0; j < m; j++){
            
            if(i++ >= size)
                map[s][j] = NULL;
            else
                map[s][j] = *p++;
            
            cout << map[s][j] << endl;
        }
    }
 
    cin >> i;
 
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2013, 18:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Функция инициализации двумерного массива нулевыми элементами
написать функцию инициализации двумерного массива нулевыми элементами использовать функцию для двух...

Создание функции инициализации двумерного массива строк через указатель
Здравствуйте,имеется двумерный массив: in_data_up=_T(&quot;00&quot;); in_data_up=_T(&quot;01&quot;); ...

Дописать программу инициализации двумерного массива в классе заданными элементами
Добрый день!!! Уже третий день не могу инициализировать ДВУМЕРНЫЙ массив в классе ЗАДАННЫМИ...

Ошибка при инициализации массива
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace...


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

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

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