Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2018, 20:48   #1
Yavorsky
 
Регистрация: 08.05.2017
Сообщений: 4
По умолчанию Перегрузка операций добавления и удаления нового элемента в динамическом массиве

Здравствуйте, имеется класс представляющий собой понятие динамического массива. Нужно перегрузить операции добавления и удаления нового элемента в динамическом массиве.
Предположим, у меня есть 2 объекта класса, первый - массив из 5 элементов, второй - массив из одного элемента (число). Я хочу добавить второй объект(число) в конец массива, как это можно реализовать?

При запуске программы вылетает ошибка. Наверняка, что-то связанно с выделением памяти, помогите пофиксить, пожалуйста.
Код:
//// ConsoleApplication110.cpp: определяет точку входа для консольного приложения.
////
//
#include "stdafx.h"
#include <iostream>
using namespace std;


class Array
{
private:
	int max;
	double  value;
	
	double *mas;
	
public:
	
	void CreateMas(int n)
	{
		max = n;
		mas = new double[max];
		for (int i = 0; i < max; i++)
		{
			mas[i] = i;
		}
	}

	void ShowMas()
	{
		for (int i = 0; i < max; i++) 
		{
			cout << mas[i] << ' '  ;
		}
		cout << endl;
	}
	void deleteArray(double* massiv) //Очистка памяти
	{
		delete[] massiv;
	}
	
	Array operator+ ( Array& obj)
	{
		Array temp;
		temp.mas = new double[max + 1];
		int k = 0;
		for (k = 0; k < max; k++)
		{
			temp.mas[k] = obj.mas[k];
		}
		
		temp.mas[k] = *obj.mas;

		return temp;

	}



	~Array()
	{
		delete[]mas;
	}

	friend ostream& operator<<(ostream&, Array&);
};
/*ostream& operator<<(ostream& o, Array& x) {
	return o << x.ShowMas;
}
*/




int main()
{
	setlocale(LC_ALL, "Russian");
	
	Array a, b ,c  ;
	
	a.CreateMas(5);
	b.CreateMas(1);
	a.ShowMas();
	b.ShowMas();
	c = a + b;
	c.ShowMas();
	return 0;
}
Yavorsky вне форума Ответить с цитированием
Старый 11.10.2018, 21:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Yavorsky Посмотреть сообщение
Предположим, у меня есть 2 объекта класса, первый - массив из 5 элементов, второй - массив из одного элемента (число). Я хочу добавить второй объект(число) в конец массива, как это можно реализовать?
Получаете суммой кол-во элементов. Создаете новый большой массив или реаллок старому, а лучше сразу возьмите вектор.

Цитата:
Сообщение от Yavorsky Посмотреть сообщение
При запуске программы вылетает ошибка. Наверняка, что-то связанно с выделением памяти, помогите пофиксить, пожалуйста.
Допишите конструктор перемещения и обнулите указатель во временном объекте.
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура удаления в односвязном динамическом списке по ключевым полям Riesig Помощь студентам 0 28.03.2013 21:03
Поиск максимального и минимального элемента в одномерном динамическом массиве GMeloman Общие вопросы C/C++ 7 11.06.2012 10:09
Замена максимального элемента минимальным и наоборот в динамическом двумерном массиве dreik92 Microsoft Office Excel 2 13.04.2011 12:04
операции над стеком в С - добавления и удаления следующего элемента стека Matadora Помощь студентам 0 04.09.2010 21:16
процедуры переворотов, добавления, удаления элемента.. для AVL дерева smalsvoloch Помощь студентам 0 03.12.2009 20:28