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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 11:01   #1
Petruha-nsk
Пользователь
 
Аватар для Petruha-nsk
 
Регистрация: 10.04.2009
Сообщений: 69
По умолчанию создать динамический Стек через класс шаблон

Добрый день!

у меня есть созданные мною классы:
Код:
class Square
			{
				private:
					int X,Y,Lenghth;
				public:
					virtual void MakingSidebar(HDC hdc)=0;
					virtual void Painted(HDC hdc)=0;
					//virtual void MultiSquare(HDC hdc)=0;

					void setX(int h){X = h;};
					void setY(int h){Y = h;};
					void setLenghth(int h){Lenghth = h;};

					int getX(){return X;};
					int getY(){return Y;};
					int getLenghth(){return Lenghth;};
			};

class Sidebar: public Square //класс-контур
					{
						private:
							int RedSide,GreenSide,BlueSide;
							int Thickness; //толщина

						public:
							void setRedSide(int h){RedSide = h;};
							void setGreenSide(int h){GreenSide = h;};
							void setBlueSide(int h){BlueSide = h;};
							void setThickness(int h){Thickness = h;};
							
							int getRedSide(){return RedSide;};
							int getGreenSide(){return GreenSide;};
							int getBlueSide(){return BlueSide;};
							int getThickness(){return Thickness;};

							void MakingSidebar(HDC hdc) //функция вывода контура
							{
								HPEN hCreatePen = CreatePen(PS_SOLID, Thickness, RGB(RedSide,GreenSide,BlueSide));
								HBRUSH hBrush = GetStockBrush(BLACK_BRUSH);

								HPEN hSelectPen = SelectPen(hdc, hCreatePen);
								HBRUSH hSelectBrush = SelectBrush(hdc, hBrush);

								Rectangle(hdc, getX(), getY(), getX() + getLenghth(), getY() + getLenghth());
							}
					};

class Potting //заливка
				{
					private:
						int RedPot,GreenPot,BluePot;
					public:
						void setRedPot(int h){RedPot = h;};
						void setGreenPot(int h){GreenPot = h;};
						void setBluePot(int h){BluePot = h;};

						int getRedPot(){return RedPot;};
						int getGreenPot(){return GreenPot;};
						int getBluePot(){return BluePot;};
				};

class PaintedSquare: public Sidebar, public Potting 
												{
													public:
														void Painted(HDC hdc)
														{
															HPEN hCreatePen = CreatePen(PS_SOLID, getThickness(), RGB(getRedSide(), getGreenSide(), getBlueSide()));
															HBRUSH hCreateBrush = CreateSolidBrush(RGB(getRedPot(), getGreenPot(), getBluePot()));

															HPEN hSelectPen = SelectPen(hdc, hCreatePen);
															HBRUSH hSelectBrush = SelectBrush(hdc, hCreateBrush);

															Rectangle(hdc, getX(), getY(), getX() + getLenghth(), getY() + getLenghth());
														}
												};

class MultifunctionFigure: public PaintedSquare
									{
									public:
										void MultiSquare(HDC hdc);
									};
но мне не удается придумать как реализовать динамический стек для того чтобы в него можно было положить элемент любого из созданного класса(в классах используется наследование). кому не составит особого труда, помогите пожалуйста.
Petruha-nsk вне форума Ответить с цитированием
Старый 08.11.2009, 12:41   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

STL'евский стек чем не устраивает?
Указатели на Square можно хранить, т.к. все классы от него наследуются. Только ввиду хранения указателей, не забывайте вызывать delete для удаляемых элементов, а то из стека объект удалится, а в памяти висеть останется.
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача аргумента в шаблон через ссылку regman PHP 6 02.02.2010 11:21
Создать шаблон класса «очередь» (C++) NieL Помощь студентам 0 09.06.2009 13:31
Создать Класс Heat JNN Общие вопросы C/C++ 0 04.06.2009 00:53
Подскажите, как создать динамический массив? snaem Общие вопросы .NET 9 14.05.2008 08:52
Как создать универсальный шаблон документа? CoolMan Microsoft Office Word 1 18.12.2007 09:10