Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
#1

Массив в классе - C++

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

Здравствуйте!Помогите разобраться.Создаю динамический массив в конструктуре класса,но в отладчике на протяжении работы программы отображается,будто он хранит один элемент(даже непроиндексованный).Делал это ,ибо пытался решить задачу:программист не знает сколько введёт элементов в стек пользователь.Я думал создать массив размерностью 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 00:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив в классе (C++):

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

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

Массив в классе - C++
Доброго времени суток, имеется программа на си++ ,проблема возникает в том ,что поле в структуре int ys нужно переделать под массив int ys;...

Массив в классе - C++
#include <iostream> #include <conio.h> #include <stdlib.h> using namespace std; class Vector { ...

Динамичный массив в классе - C++
создайте АТД class, в области данных которого содержится динамический массив чисел типа float и целое число (минимального элемента...

Массив структур в классе - C++
Задача состоит в том, что создаётся структура с полями "дело", "время начала", "время окончания" и создаётся класс с методами реализации...

2
stima
490 / 342 / 40
Регистрация: 22.03.2011
Сообщений: 1,095
Завершенные тесты: 2
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
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
26.04.2014, 01:10 #3
1) Про копию указателя уже сказали
2) копировать элементы из старой памяти кто будет?
3) max - тоже копия
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2014, 01:10
Привет! Вот еще темы с ответами:

Массив класса в классе - C++
Вот код: #include <iostream> using namespace std; class CFirst { public: int m_n; int m_m; CFirst(){} };

Динамический массив в классе - C++
Здравствуйте! Я пишу программу, в ней мне необходимо сделать иерархию, и в произвольных классах сделать контейнер - динамический массив....

Динамический массив в классе - C++
Существует пример создания динамического двумерного массива: float **Matrix = new float*; for(i = 0; i <SizeOfMatrix;i++) { ...

Динам. массив в классе - C++
Здравствуйте, За пример брал пободный код (он работает и делает дин.массив из нолей): #include <iostream> using namespace std; ...


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

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

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