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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 22:37   #1
kirakivuk
Новичок
Джуниор
 
Регистрация: 08.12.2014
Сообщений: 5
По умолчанию Шаблон класса. Перегрузка

Здравствуйте!

Задание такое:
Создать шаблон заданного класса.
Класс - ученик средней школы (общеобразовательная школа, лицей, техникум, ПТУ) Дополнительно перегрузить следующие операции:
Операцию изменения статуса (младшие, средние и старшие классы)
при добавлении целого числа
перехода в следующий класс

Очень надеюсь, что тут мне смогут помочь так как не понимаю сути задания.
Заранее благодарна!
kirakivuk вне форума Ответить с цитированием
Старый 08.12.2014, 22:45   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

напишите, как понимаете (даже если совсем ниче не понимаете, но все равно что-то да понимаете?). Там уж и подскажут
Smogg вне форума Ответить с цитированием
Старый 08.12.2014, 22:47   #3
kirakivuk
Новичок
Джуниор
 
Регистрация: 08.12.2014
Сообщений: 5
По умолчанию

В том то и дело, что почти никак не понимаю(
то есть "переход в следующий класс" - я еще хоть как-то понимаю, то прибавление целого числа-для меня не ясна сама суть
kirakivuk вне форума Ответить с цитированием
Старый 09.12.2014, 01:58   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

ок.
опишите словами, что из себя представляют по отдельности классы УченикЛицей и УченикШкола. Какие у них свойства и методы.
Smogg вне форума Ответить с цитированием
Старый 09.12.2014, 17:58   #5
kirakivuk
Новичок
Джуниор
 
Регистрация: 08.12.2014
Сообщений: 5
По умолчанию

насколько я это понимаю там нужен общий класс Ученик, разве нет?
kirakivuk вне форума Ответить с цитированием
Старый 09.12.2014, 20:23   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от kirakivuk Посмотреть сообщение
насколько я это понимаю там нужен общий класс Ученик, разве нет?
Действитно, мутное задание:
Код:
// TemplateStudent.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <iostream>
#include <string>
#include <locale>

using namespace std;

class StudentSchool{
public:	
	StudentSchool(int yer)
	{

		klassYear = yer;
	}
	void nextLevel(int stp = 1){
		klassYear += stp;
	}

	void status()
	{
		string stt;
		if (klassYear < 4)
			stt = "ученик начальных классов.";
		else if (klassYear <= 9)
			stt = "ученик средних классов.";
		else if (klassYear <= 11)
			stt = "ученик старших классов.";
		cout << stt << endl;
	}
private:
	int klassYear;
};


class StudentTech{
public:	
	StudentTech(int yer)
	{
		cursYear = yer;
	}
	void nextLevel(int stp = 1){
		cursYear +=stp;
	}

	void status()
	{
		string stt;
		if (cursYear < 3)
			stt = "бакалавр.";
		else if (cursYear <= 5)
			stt = "магистр.";
		else if (cursYear <= 7)
			stt = "аспирант.";
		else 
			stt = "профессор.";
		cout << stt << endl;
	}
private:
	int cursYear;
};


template <class T>
class Student{
public:
	Student(int y): dat(y){}

	void showState(){
		dat.status();
	}
	void nextStep(int s = 1){
		dat.nextLevel(s);
	}
private:
	T dat;


};



int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "rus");
	Student<StudentTech> s1(1);
	Student<StudentSchool> s2(3);
	s1.showState();
	s2.showState();
	cout << endl;

	s1.nextStep(3);
	s2.nextStep();

	s1.showState();
	s2.showState();

	getchar();
	return 0;
}
Тут скорее нужна виртуальна функция, которая реализуется в классах-наследниках, чем такое использование шаблонов...
Smogg вне форума Ответить с цитированием
Старый 09.12.2014, 22:43   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Судя по формулировке - там есть общее задание, из которого понятна суть, а автор темы скопировала сюда только данные для своего варианта из таблицы )
Son Of Pain вне форума Ответить с цитированием
Старый 10.12.2014, 01:05   #8
kirakivuk
Новичок
Джуниор
 
Регистрация: 08.12.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
Действитно, мутное задание:
Код:
// TemplateStudent.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <iostream>
#include <string>
#include <locale>

using namespace std;

class StudentSchool{
public:	
	StudentSchool(int yer)
	{

		klassYear = yer;
	}
	void nextLevel(int stp = 1){
		klassYear += stp;
	}

	void status()
	{
		string stt;
		if (klassYear < 4)
			stt = "ученик начальных классов.";
		else if (klassYear <= 9)
			stt = "ученик средних классов.";
		else if (klassYear <= 11)
			stt = "ученик старших классов.";
		cout << stt << endl;
	}
private:
	int klassYear;
};


class StudentTech{
public:	
	StudentTech(int yer)
	{
		cursYear = yer;
	}
	void nextLevel(int stp = 1){
		cursYear +=stp;
	}

	void status()
	{
		string stt;
		if (cursYear < 3)
			stt = "бакалавр.";
		else if (cursYear <= 5)
			stt = "магистр.";
		else if (cursYear <= 7)
			stt = "аспирант.";
		else 
			stt = "профессор.";
		cout << stt << endl;
	}
private:
	int cursYear;
};


template <class T>
class Student{
public:
	Student(int y): dat(y){}

	void showState(){
		dat.status();
	}
	void nextStep(int s = 1){
		dat.nextLevel(s);
	}
private:
	T dat;


};



int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "rus");
	Student<StudentTech> s1(1);
	Student<StudentSchool> s2(3);
	s1.showState();
	s2.showState();
	cout << endl;

	s1.nextStep(3);
	s2.nextStep();

	s1.showState();
	s2.showState();

	getchar();
	return 0;
}
Тут скорее нужна виртуальна функция, которая реализуется в классах-наследниках, чем такое использование шаблонов...
Спасибо огромное! Вы уже очень помогли, я постараюсь как-то выкрутиться
kirakivuk вне форума Ответить с цитированием
Старый 10.12.2014, 01:08   #9
kirakivuk
Новичок
Джуниор
 
Регистрация: 08.12.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Судя по формулировке - там есть общее задание, из которого понятна суть, а автор темы скопировала сюда только данные для своего варианта из таблицы )
Да, я понимаю, что это так и выглядит, я действительно забыла написать общее задание, поскольку мне была непонятна формулировка именно моего задания. Если это как-то поможет, то вот:"Создать шаблон заданного класса. Определить конструкторы, деструкторы, перегруженную операцию присвоения (“=”) и операции, заданные в варианте задания."
Прошу прощения за неполноту информации, в панике не заметила(
kirakivuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шаблон класса.. YaDenis Помощь студентам 0 10.01.2013 02:11
Шаблон класса brewsters Общие вопросы C/C++ 3 15.07.2012 21:00
C++шаблон класса cati Помощь студентам 1 30.04.2010 00:24
не получается шаблон класса Yura_n Общие вопросы C/C++ 6 26.01.2010 19:39
Шаблон класса androidvsu Общие вопросы C/C++ 2 26.04.2009 11:57