1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
1

Массив в классе

26.04.2014, 00:34. Показов 567. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!Помогите разобраться.Создаю динамический массив в конструктуре класса,но в отладчике на протяжении работы программы отображается,будто он хранит один элемент(даже непроиндексованный).Делал это ,ибо пытался решить задачу:программист не знает сколько введёт элементов в стек пользователь.Я думал создать массив размерностью 1 и потом создать функцию,которая при каждом вызове функции push(добавить элемент) будет увеличивать размер массива на единицу,но выдаёт чушь,после увеличения размера вместо элемента я получаю мусор.Использовал данный метод при работе НЕ с классами ,и всё работало. :0
Функция добавления:
C++
1
2
3
4
5
int*  stack::t(int * arr,int max)
{
    max++;
    return(arr=new int[max]); 
}
Функция push:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool stack:: push(int c)
{
    if(index==max)
    {
        return false;
    }
    else
    {
        arr[index]=c;
        t(arr,max);
        index++;
        return true;
    }
}
Конструктор класса:
C++
1
2
3
4
5
6
stack(int n)
    {
        index=0;
         arr=new int[n];
         max=n;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2014, 00:34
Ответы с готовыми решениями:

В классе инициализировать массив, в классе создать функцию вывода массива на экран
Прошу помоши с выводом данных, которые содержаться в массиве, на экраy: Задача: В классе...

В одном классе нужно создать массив, а в классе program его вывести. "Не все ветви кода возвращают значение"
В одном классе нужно создать массив, а в классе program его вывести, помогите, как разобраться ...

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

Массив в классе
Как обратится к статистическому массиву?class mysqlAction{ public static $config = array(...

2
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
26.04.2014, 00:53 2
Вы не допустили "ошибку новичка". Указатель это тоже тип и передается он в функцию по значению (поищете подробней сами).

C++
1
2
3
4
5
int*  stack::t(int * arr,int max)
{
    max++;
    return(arr=new int[max]); //вот здесь происходит утечка памяти
}
C++
1
2
3
4
5
int*  stack::t(int *& arr,int max)
{
    max++;
    return(arr=new int[max]); //вот здесь происходит утечка памяти
}
Заметьте я передаю указатель на начало массива по ссылке.

п.с. Дальше, судя по урывкам кода, "все нормально" (судя из работоспособности, но не "идеальности"), кроме форматирования.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
26.04.2014, 01:10 3
1) Про копию указателя уже сказали
2) копировать элементы из старой памяти кто будет?
3) max - тоже копия
0
26.04.2014, 01:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2014, 01:10
Помогаю со студенческими работами здесь

Массив в классе
Как создать массив в классе? Дабы не засорять Form1 было принято решение создать и описать массив...

Массив в классе
Доброго времени суток. Возможно ли создать массив в классе и при вызове объекта add(ить) его не...

Массив в классе
Здравствуйте. Плохо разбираюсь в классах, не могли бы вы мне, пожалуйста, помочь. Есть задача:...

массив в классе
Здравствуйте.Подскажите пожалуйста правильное решение.Создаю класс,в нем имеется поле размер...


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

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

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