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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 14:51   #1
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию Переопределение оператора в классе

Добрый день
Возникла проблема с переопределением операторов в классе
Задание включает в себя:
- нарисовать простыми фигурками самолетик с вводимыми параметрами
Необходимо использовать классы\наследование, шаблоны, переопределение операторов
Для последнего я задумала использовать +, чтобы увеличить некоторые части самолетика. Необходимым условием является и то, что пользователь должен вводить параметр насколько он хочет увеличить детальку.
Взяла самый простой пример с унарными операторами, не получается, может кто-нибудь подсказать почему?
Код:
#include <iostream.h>
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
#include <string.h>
#include <conio.h>

class figure
{
protected:
	int color;
	int centerX;
	int centerY;
	int Xradius;
	int Yradius;
	int delta;
public:
	figure(int icenterX,int icenterY,int iXradius,int iYradius )
	{
	color = YELLOW;
	centerX = icenterX;
	centerY = icenterY;
	Xradius = iXradius;
	Yradius = iYradius;
	}
	virtual void show() = 0;
	virtual void hide()
	{
		int prev_color = color;
		color = getbkcolor();
		show();
		color = prev_color;
	}
	void Move(int DeltaX, int DeltaY)
	{
		int prev_color = color;
		hide();
		centerX+=DeltaX;
		centerY+=DeltaY;
		show();
		color = prev_color;
	}
};
class Ellipse: public figure
{
private:
      int stangle;
      int endangle;
public:
      Ellipse(int icenterX,int icenterY,int istangle,int iendangle,int iXradius,int iYradius):
       figure ( icenterX,icenterY,iXradius,iYradius )
      {
	stangle = istangle;
	endangle = iendangle;
      }

      void show()
      {
       setcolor(color);
       ellipse(centerX,centerY,stangle,endangle,Xradius,Yradius);
      }
	Ellipse operator ++ ()
      {
	int prev_color = color;
	hide();
	Xradius++;
	//Yradius++;
	show();
	color = prev_color;
	return *this;
      }
} ;
int main(void)
 {
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;

   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode,"C:/TC/BGI");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with an error code */
   }
   /* draw the circle */
  // circle(midx, midy, radius);
   int X; int Y;
   int wing,l,o;
   cout << "vvedite koordinaty raspolozhenija samoleta X: ";
   cin >> X;
   cout << "Y: ";
   cin >> Y;
   cout << "Razmah kryla: ";
   cin >> wing;
   cout << "dlina samoleta (>50): ";
   cin >> l;
   cout << "vvedite razmah opereniya (>40): ";
   cin >> o;
Ellipse f1(X,Y,0,360,wing,30);
   figure *f2;
   f2 = new Ellipse(X,Y+20,0,360,30,l);
   Ellipse f3(X,Y+l-15,0,360,o,20);
   f1.show();
   f2->show();
   f3.show();
   /* Вот на этом заминка*/
   for (int i=1; i< 50; i++)
   {
   ++f1; // uvelechenie razmaha
   ++f3; // uvelechenie operenija
   }
   getch();
   closegraph();
   return 0;
}
Никому не поставить нас на колени! Мы лежали и будем лежать!

Последний раз редактировалось Rekky; 04.05.2011 в 14:58.
Rekky вне форума Ответить с цитированием
Старый 04.05.2011, 16:44   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

какая именно ошибка ????
из очевидного вижу использование в базовом классе show(); , которая не имеет определения... переопределите hide();
onewho вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора в шаблонном классе alex_alpha Общие вопросы C/C++ 0 12.08.2010 21:37
Переопределение оператора умножения для класса. Умножение числа на класс. capta1n Общие вопросы C/C++ 2 06.03.2010 16:50
Переопределение оператора умножения EmperorXXX Общие вопросы Delphi 1 16.10.2009 00:16
Наследование и переопределение. Lunex.08 Общие вопросы C/C++ 3 29.09.2009 09:23
использование условного оператора в теле оператора цикла с условием машко Помощь студентам 2 21.06.2009 23:55