227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
1

Не работает динамический массив в классе: что раньше, указатель или размер?

05.12.2015, 07:10. Показов 1317. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста где ошибка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class arar
{
    int*arr, size;
public:
    arar() :arr(new int[size]()), size(10)
    {
        for (int i(0); i < size; i++)
            arr[i] = rand() % 10;
        cout << "created\n";
    }
    void show();
    
    ~arar()
    {
        delete[]arr;
    }
    
};
Добавлено через 8 минут
А вот так все работает. Как правильно сделать списком?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class arar
{
    int*arr, size;
public:
    arar() 
    {
        size = 10;
        arr = new int[size]();          
        for (int i(0); i < size; i++)
            arr[i] = 1;
        cout << "created\n";
    }
    void show();
    
    ~arar()
    {
        delete[]arr;
    }
    
};
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2015, 07:10
Ответы с готовыми решениями:

Объявить в классе-наследнике указатель, указывающий туда же, куда указывает указатель в классе-родителе
Здравствуйте. Имеется базовый класс MainWindow: #ifndef MAINWINDOW_H #define MAINWINDOW_H...

Что быстрее использовать, массив э-в, или указатель на массив э-в?
уважаемые, что быстрее использовать, массив э-в, или указатель на массив э-в? или без разницы? С...

Динамический массив и указатель на указатель
Спасибо за внимание) Задача такова: нужно удалить элемент по индексу, при этом уменьшить сам массив...

Компилятор ругается, что для индекса требуется массив или указатель
У меня программа делает, по крайней мере, должна делать следующее: заполнять, линейный...

8
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
05.12.2015, 08:29 2
Потому что size не определён.
C++
1
arar(): arr(new int[10]), size(10)
1
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
05.12.2015, 11:58  [ТС] 3
nmcf,
В таком случае уже определен?
C++
1
2
3
4
5
6
arar() :size(10), arr(new int[size]())
    {
        for (int i(0); i < size; i++)
            arr[i] = 1;
        cout << "created\n";
    }
Но все равно крашит
0
-L
15 / 9 / 12
Регистрация: 03.12.2015
Сообщений: 79
05.12.2015, 12:22 4
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

anti-k, порядок инициализации не зависит от расположения их в списке. Только от определения в классе.

Так что поменяйте
C++
1
int*arr, size;
на
C++
1
 int size,*arr;
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
05.12.2015, 12:24  [ТС] 5
Точно!!
0
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
05.12.2015, 12:52 6
Цитата Сообщение от -L Посмотреть сообщение
Только от определения в классе
Легко запутаться.

В приведённом примере надо явно указать 10, нет смысла использовать этот size.
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
05.12.2015, 14:27  [ТС] 7
nmcf, Мое почтение!!
Цитата Сообщение от nmcf Посмотреть сообщение
В приведённом примере надо явно указать 10, нет смысла использовать этот size.
Мне наивно казалось что как раз стоит сохранить указатель на массив и размер в одном объекте, а как лучше?
0
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
05.12.2015, 14:31 8
Я говорю, что если ты явно указываешь 10 для size, то точно также можно указать размер массива - константой. Для чего обязательно ссылаться на size?

Добавлено через 1 минуту
В конструкторе, а не вообще в классе.
1
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
05.12.2015, 14:33  [ТС] 9
nmcf, Понятно
0
05.12.2015, 14:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2015, 14:33
Помогаю со студенческими работами здесь

Что лучше использовать библиотеку <vector> или динамический массив
Что лучше использовать библиотеку &lt;vector&gt; или динамический массив

Можно ли в классе создавать массив переменной длинны. Например динамический массив?
Динамические массивы привлекают больше. :)

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий...

Динамический массив в классе
Запускается, но вылетает на строке x=k; значения передаются нормально #include &lt;iostream&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru