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

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

Восстановить пароль Регистрация
 
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
05.12.2015, 07:10     Не работает динамический массив в классе: что раньше, указатель или размер? #1
Подскажите пожалуйста где ошибка
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;
    }
    
};
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2015, 07:10     Не работает динамический массив в классе: что раньше, указатель или размер?
Посмотрите здесь:

Динамический массив в классе C++
Указатель на двухмерный динамический массив C++
C++ компилятор ругается, что для индекса требуется массив или указатель
Нужно сделать указатель на динамический двумерний массив C++
C++ Динамический массив и указатель
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,480
05.12.2015, 08:29     Не работает динамический массив в классе: что раньше, указатель или размер? #2
Потому что size не определён.
C++
1
arar(): arr(new int[10]), size(10)
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
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";
    }
Но все равно крашит
-L
15 / 9 / 10
Регистрация: 03.12.2015
Сообщений: 79
05.12.2015, 12:22     Не работает динамический массив в классе: что раньше, указатель или размер? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
anti-k, порядок инициализации не зависит от расположения их в списке. Только от определения в классе.

Так что поменяйте
C++
1
int*arr, size;
на
C++
1
 int size,*arr;
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
05.12.2015, 12:24  [ТС]     Не работает динамический массив в классе: что раньше, указатель или размер? #5
Точно!!
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,480
05.12.2015, 12:52     Не работает динамический массив в классе: что раньше, указатель или размер? #6
Цитата Сообщение от -L Посмотреть сообщение
Только от определения в классе
Легко запутаться.

В приведённом примере надо явно указать 10, нет смысла использовать этот size.
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
05.12.2015, 14:27  [ТС]     Не работает динамический массив в классе: что раньше, указатель или размер? #7
nmcf, Мое почтение!!
Цитата Сообщение от nmcf Посмотреть сообщение
В приведённом примере надо явно указать 10, нет смысла использовать этот size.
Мне наивно казалось что как раз стоит сохранить указатель на массив и размер в одном объекте, а как лучше?
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,480
05.12.2015, 14:31     Не работает динамический массив в классе: что раньше, указатель или размер? #8
Я говорю, что если ты явно указываешь 10 для size, то точно также можно указать размер массива - константой. Для чего обязательно ссылаться на size?

Добавлено через 1 минуту
В конструкторе, а не вообще в классе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2015, 14:33     Не работает динамический массив в классе: что раньше, указатель или размер?
Еще ссылки по теме:

Динамический массив в классе C++
C++ Динамический массив в классе
Умный указатель и динамический массив C++

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

Или воспользуйтесь поиском по форуму:
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
05.12.2015, 14:33  [ТС]     Не работает динамический массив в классе: что раньше, указатель или размер? #9
nmcf, Понятно
Yandex
Объявления
05.12.2015, 14:33     Не работает динамический массив в классе: что раньше, указатель или размер?
Ответ Создать тему
Опции темы

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