Задача гласит: Нарисуйте прямоугольник со скругленными углами. Определите класс Box, состоящий из четырех линий и четырех дуг. Поэтому я написал приведенный ниже код для этого упражнения:
#include <Simple_window.h>
Simple_window win(Point(100,100), 600,400, "semi-ellipse");
struct Box: Shape{
Box(Point p, int ww, int hh): w(ww), h(hh)
{ add(Point(p.x-ww,p.y-hh)); }
void d_l() const //creating 4 lines
{
Line hrz1 (Point(150,100), Point(400,100));
Line hrz2 (Point(150,300), Point(400,300));
Line ver1 (Point(507,150), Point(507,250));
Line ver2 (Point(41,150), Point(41,250));
win.attach(hrz1);
win.attach(hrz2);
win.attach(ver1);
win.attach(ver2);
}
void draw_lines() const //creating 4 arcs
{
fl_arc(point(0).x,point(0).y,w,h,30,90);
fl_arc(point(0).x,point(0).y,w,h,270,330);
fl_arc(point(0).x,point(0).y,w,h,90,150);
fl_arc(point(0).x,point(0).y,w,h,210,270);
}
private:
int w;
int h;
};
int main()
{
using namespace Graph_lib;
Box b(Point(100,100),100,50);
win.attach(b);
win.wait_for_button();
}
Когда я запустил его, я столкнулся с этим исключением:
Необработанное исключение по адресу 0x757FE9D7 (ole32.dll) в test.exe: 0xC0000005: место чтения нарушения прав доступа 0x00000004.
Я знаю, что это относится к объявлению Simple_window win(Point(100,100), 600,400, "semi-ellipse");
в глобальном состоянии. Но я сделал это, потому что должен был это сделать. Проблема в том, как прикрепить строки, а также объект (здесь b
) к Simple_window win
в любой части (функция main()
, а также Box
структура).