Code: class Figurs{ figura* m_fig; int m_cnt; public: Figurs(int figCount){ m_fig = new figura[figCount]; for(int i = 0; i < figCount; i++) m_fig[i] = NULL; m_cnt = figCount; } ~Figurs(){ for(int i = 0; i < m_cnt; i++) if(m_fig[i] != NULL) delete m_fig[i]; delete [] m_fig; } Figura*& operator[] (int n){ if(n < 0 || n >= m_cnt) throw 1; return m_fig[n]; } void PrintFigura(); void PrintAllFiguras(); float ObshavaPloshad(); float ObshiiPerimetr(); }; Первый вопрос что значит ~ перед именем типом. Второй вопрос что значит *& после имени типа и что на что перегружается. P.S. Подруга попросила помочь, сама ничего не знает ей одногруппница написала) А сам я так далеко в "с++ за 21 день" не дочитал)
Я же сказал что стоит, иначе не видать мне ещё долго благодарности) Если увидел ошибки убедительно прошу сообщить о них, как можно подробнее. Да и throw 1. я так понял для определения ошибки переназначения оператора? О_0
Ну если предположить, что там где-то есть все таки объявление типа figura, то еще можно поковырять. ~Figurs() это деструктор, а магическое *& - ссылка на указатель. А throw, выбрасыает исключение, когда n меньше 0 или больше длинны "массива".
задача из нескольких изображений склеить одну? в каждом for {} ставить printf, того, что меняется. мне кажется, алго можно сделать проще.
Ну и самый наверное главный косяк: Code: ... m_fig = new figura[figCount]; for(int i = 0; i < figCount; i++) m_fig[i] = NULL; ... Выделили память под массив объектов (надеюсь что никому в голову не пришло делать figura именно указателем на объект), зачем-то объекту (!) присвоили ноль) Дальше веселее, в деструкторе объекты, под которые память то и не выделялась пытаются удалить, а это как минимум Undefined Behavior, но скорее всего будет крэш. Еще удивительно зачем возвращать было именно ссылку на указатель, а не просто ссылку\указатель.
нет задача: хранить коллекцию классов фигур, перегрузить оператор []. По пути программа считает площадь и периметр фигур по отдельности и вместе. Если есть возможность помочь дам сорс.
Как написал выше я не доучил с++ до этих тем, поэтому сейчас все смутно понятно. Подскажи как будет рациональнее. ты не об этом случаем? typedef Figura* figura; (до того что я выкатил идет)
тогда самое простое - просто слить себе без браузера, Offline Explore - годно, .js например из Odnoklassniki, или любого другого сайта, где используется фото-галерея. это упрощая задачу. справишься сам, изучение правда несколько часов, и идея решения - в несколько десяток минут. невозможно. неверная постановка задачи преподом (?) - посчитать площадь изображений. посчитать площадь фигур в изображениях, если не заданы изначально своим алго - не представляется возможным.
Да там мудаки ведут ничего (кстати вуз на уровне страны котируется), там нет изображений, там лишь фигуры набранные от руки: ромб, прямоугольник, круг и тд.
такие преподы и издеваются. задача ясна теперь. чтобы из изображения снять объект, "ромб, прямоугольник, круг" и посчитать его геометрические параметры - длину, вышину, диаметр. для этого C++ недостаточно. может в названии файла изображения есть romb10.gif, krug20.jpg? хотя, наврядли.
altblitz ты все усложняешь) Параметры фигур ты вводишь самостоятельно с клавиатуры, без файлов!) Это задача первого курса. Я понял что троу это экзепшн на то что бы параметр не выходил за пределы массива.