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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2020, 13:48   #1
archic
Новичок
Джуниор
 
Регистрация: 01.08.2020
Сообщений: 1
По умолчанию перегрузка операторов -= и <<

Добрый день. Пробую сделать лаб. работу. столкнулся с проблемами.
вот само задание:
Создать коллекцию.
Реализация коллекции должна вестись с использованием массива указателей на объекты класса
Разработанный класс должен содержать следующие методы:
1) конструктор;
2) деструктор, уничтожающий объекты коллекции;
3) добавления объектов в коллекцию (параметр – указатель на объект);
4) удаления объектов из коллекции по номеру (перегруженная операция:
ссылка_на_коллекцию -= int;
5) получения количества элементов в коллекции;
6) получения указателя на объект коллекции по номеру объекта;
7) отображения на экране всех элементов коллекции (перегруженная операция:
поток_вывода << ссылка_на_коллекцию.

не получается сделать перегрузку операторов строки 62-76.
подскажите как надо реализовать правильно деструктор?
в конце написал, но не в теле деструктора, как надо правильно?

Код:
#include <iostream>
#include <vector>
#include <string>
using namespace std; 

class Test
{
public:
	Test(int a);
	~Test();
	int getA() const;
	void setA(int number);
	void show();
private:
	static int count;
	int a;
};

int Test::count = 0;
static vector <Test*> testers;
vector <Test*> *ptesters = &testers;

Test::Test(int a)
{
	this->a = a;
	cout << "Object created: " << this << endl;
}

Test::~Test()
{
	cout << "Object destroyed: " << this << endl;
}

int Test::getA() const
{
	return a;
}

void Test::setA(int number)
{
	this->a = a;
}

void addTester(Test *obj)
{
	testers.push_back(obj);
}

int getSizeTesters()
{
	return testers.size();
}

Test* getPointerTester(int ind)
{
	return *(&testers[ind]);
}

/*void operator -=(int index)
{
	cout << "removing tester which index " << index << endl;
	*ptesters.erase(testers.begin() + index);
}

void operator <<(vector <Test*> *testers)
{
	for (int i = 0; i < testers.size(); i++)
	{
		testers[i]->show();
		cout << "index: " << i << endl;
	}
}
*/

void Test::show()
{
	cout << "-----------------\n";
	cout << "A: " << this->a << endl;
}

int main()
{
	Test *tester1 = new Test(1) ;
	Test *tester2 = new Test(2) ;
	Test *tester3 = new Test(3) ;

	addTester(tester1);
	addTester(tester2);
	addTester(tester3);

	for (int i = 0; i < testers.size(); i++)
	{
		if (testers[i] != NULL)
		{
			testers[i]->show();
			cout << "index: " << i << endl;
		}
	}

	cout << "Size of testers: " << getSizeTesters() << endl;
	cout << "Pointer of tester_1: " << getPointerTester(0) << endl;

	/* реализация деструктора*/
	for (int i = 0; i < testers.size(); i++)
	{
		delete	testers[i];
	}
	
	system("pause");
}
archic вне форума Ответить с цитированием
Старый 07.08.2020, 17:57   #2
Petros-20
Пользователь
 
Регистрация: 14.03.2020
Сообщений: 45
По умолчанию

Никогда не делал перегрузку операторов, но предполагаю, функции реализующие операторы, должны возвращать что-то типа указателей.
Где-то как-то должен быть return.
Petros-20 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов (С++) lolk Помощь студентам 2 31.05.2012 12:10
перегрузка операторов сега21 Помощь студентам 0 20.05.2012 12:38
Перегрузка операторов Leo_ня Общие вопросы C/C++ 7 10.04.2011 15:52
Перегрузка операторов. Macb3th Общие вопросы C/C++ 5 01.04.2010 21:14
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15