Задать вопрос
@dero
о себе

Шаблоны классов с++ как доделать задачу?

1. Описать шаблон класса АТД: "Участник очереди на печать издания: фамилия, телефон, количество страниц"
2. Определить и реализовать в шаблоне класса конструкторы, деструкторы, функции Input (ввод с клавиатуры) и Print (вывод на экран), перегрузить операцию присваивания.
3. Предусмотреть генерацию и обработку двух исключений для возможных ошибок. Ситуации, которые могут привести к генерации исключений смоделировать самостоятельно.
4. Показать использование созданного класса, включая ситуации, приводящие к генерации исключений. Показать инстанцирование шаблона для типов int, double.

Не понятно как перегрузить операцию присвоения, и как подставить в шаблон int и double если там должна быть строка.

Да и в целом не сильно разобрался с ООП, прошу помощи в исправлении данной программы. То что написано:
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
template <class t_name, class t_tel, class t_count>
class OCHERED {
private: 
	t_name name;
	t_tel tel;
	t_count count;
public:
	OCHERED () {}
	OCHERED (t_name t1, t_tel t2, t_count t3) {name = t1; tel = t2; count = t3}

	void Input() {
			cout << "Фамилия: "; cin >> name;
			cout << "Номер телефона: "; cin >> tel;
			cout << "Количество страниц: "; cin >> count;
		try
		{
			if(count <= 0) throw "Количество страниц не может быть 0 или меньше";
		}
		catch(const char* s)
		{
			cout << endl << s << endl;
			Input();
		}
	}
	
	void Print(){
		cout << "Фамилия: " << name << endl;
		cout << "Номер телефона: " << tel << endl;
		cout << "Количество страниц: " << count << endl;
	}
};

int main()
{
    setlocale(0,""); //поддержка кирилицы
	
	OCHERED<string,string,int> obj;
	obj.Input();
	obj.Print();

    _getch();
 
    return 0;
}
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ipc_ngs
2) Для перегрузки оператора присваивания, нужно в шаблонный класс добавить описание метода OCHERED& operator=(const OCHERED& obj) с покомпонентным присваиванием полей, пример есть в https://habrahabr.ru/post/132014/
4) В данном случае возиожно будет достаточно использовать int и double только в последнем параметре шаблона (целое или дробное количество страниц). Можно сделать его единственным параметром шаблона.

3) Для исключительных ситуаций лучше описать отдельные классы для разных ситуаций, бросать исключения внутри вызываемой функции Input(), а отлавливать их в месте ее вызова из main().

Ну и для большей осмысленности примера стоит завести список/массив заданий, вводить и печатать их в цикле.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы