Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
parkito
12 / 12 / 9
Регистрация: 22.03.2010
Сообщений: 694
1

Объявление двумерного массива в классе

20.03.2016, 15:59. Просмотров 1432. Ответов 3
Метки нет (Все метки)

Здравствуйте. Мне нужно создать поле в классе, выраженное двумерным массивом.
Я
делаю так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
class Fence {
private:
    const int maxX = 5, maxY = 5;
public:
   int **Arr = new int *[maxY];
  
    Fence() {
        maxX=5;maxY=5
        }
 
    }
На что компилятор выдает мне:

Process finished with exit code 11

Когда я делаю так, то все работает

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
class Fence {
private:
    const int maxX = 5, maxY = 5;
public:
   int Arr[5][5];
 
    Fence() {
        maxX=5;maxY=5
        }
 
    }
Но мне нужно именно выделения памяти как в первом примере. Подскажите, что я делаю не так?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2016, 15:59
Ответы с готовыми решениями:

Объявление константы и массива в классе
Задача: 1. объявить константу в созданном классе и сделать ее видимой для всех методов данного...

Объявление двумерного массива
Здравствуйте! Как объявить двумерный массив как public , я имею ввиду что например класс или...

Объявление двумерного массива (не целочисленные значения)
Здравствуйте. Помогите объявить двумерный массив с нецелочисленными значениями. Я хочу написать...

Инициализация двумерного массива в классе
Есть класс: class Test { int T; public: Test(); ~Test(); };

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

3
hoggy
Эксперт С++
7402 / 3329 / 688
Регистрация: 15.11.2014
Сообщений: 7,615
Завершенные тесты: 1
20.03.2016, 16:07 2
Цитата Сообщение от parkito Посмотреть сообщение
Подскажите, что я делаю не так?
не предоставили минимально компилирующийся пример-иллюстрацию,
содержащий функцию main, и все необходимые классы,
который иллюстрирует вашу проблему.


телепаты в отпуске.




----------------------
представленный код не компилируется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Fence {
private:
    const int maxX = 5, maxY = 5; //<--- константы
public:
   int **Arr = new int *[maxY];
  
    Fence() {
        maxX=5;maxY=5 //<--- попытка подифицировать константу
            // отсутствие ;
        }
 
    }  // <--- отсутствие ;
0
parkito
12 / 12 / 9
Регистрация: 22.03.2010
Сообщений: 694
20.03.2016, 16:14  [ТС] 3
hoggy, Я полагаю, что у меня концептуальная ошибка, а не синтаксическая

C++ (Qt)
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
#include<iostream>
 
using namespace std;
 
class Fence {
private:
    const int maxX = 5, maxY = 5;
public:
    //doesn't work
    int **Arr = new int *[maxY];
    //works
   // int Arr[5][5];
 
    Fence() {
        for (int i = 0; i < maxY; ++i) {
            for (int j = 0; j < maxX; ++j) {
                Arr[i][j] = 0;
 
            }
        }
 
    }
 
 
    void showFence() {
        for (int i = 0; i < maxY; ++i) {
            for (int j = 0; j < maxX; ++j) {
                cout << Arr[i][j] << " ";
            }
            cout<<endl;
        }
 
    }
 
 
};
 
int main() {
 
    Fence obj;
    obj.showFence();
    return 0;
}
0
hoggy
Эксперт С++
7402 / 3329 / 688
Регистрация: 15.11.2014
Сообщений: 7,615
Завершенные тесты: 1
20.03.2016, 16:33 4
Лучший ответ Сообщение было отмечено parkito как решение

Решение

Цитата Сообщение от parkito Посмотреть сообщение
Я полагаю, что у меня концептуальная ошибка, а не синтаксическая
полагаю, что немногие захотят тратить своё время
на исправления синтаксических ошибок,
что бы в итоге добраться до концептуальных,
в условиях, когда просителю было впадлу
предоставить материал в человечачьем виде.

а кроме того, я не зря сообщил вам о main,
поскольку, хоть я и не телепат,
но даже мне было очевидно,
что причина ошибки не была продемонстрирована
в коде из нулевого поста.

лекарство:
http://rextester.com/UQHKH48027
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
#include<iostream>
 
using namespace std;
 
class Fence {
private:
    const size_t maxX = 5, maxY = 5;
public:
    int **Arr = new int *[maxY];  //<--- захват память под массивы
 
    Fence() 
    {
        for (size_t i = 0; i < maxY; ++i) 
        {
            Arr[i] = new int[maxX];  // <--- сами массивы не забываем выделять
 
            for (size_t j = 0; j < maxX; ++j) 
                Arr[i][j] = 0;
        }
    }
 
 
    void showFence()const 
    {
        for (size_t i = 0; i < maxY; ++i) 
        {
            for (size_t j = 0; j < maxX; ++j)
                cout << Arr[i][j] << " ";
            cout<<endl;
        }
    }
};
 
int main() {
 
    Fence obj;
    obj.showFence();
}
2
20.03.2016, 16:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2016, 16:33

Обьявление и инициализация динамического двумерного массива в классе
Пытаюсь создать в классе динамический двумерный массив, не могу понять что я делаю не так( При...

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

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


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

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

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