Форум программистов, компьютерный форум CyberForum.ru

Абстрактные и производные классы С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка с классом в C++ http://www.cyberforum.ru/cpp-beginners/thread1003491.html
#include <iostream> using namespace std; class Cat { public: Cat(int initAge); ~Cat(); void SetAge(int age); int GetAge(); private: int Age;
C++ Дружеские числа Два натуральных числа называют дружескими, если каждое с них будет равно сумме всех делителей другого, кроме этого самого числа. Найти все пары дружеских чисел, что находятся в диапазоне от 200 до 300 http://www.cyberforum.ru/cpp-beginners/thread1003482.html
C++ многомерные массивы. квадратная матрица
всем доброго времени суток. нужно заменить все элементы НАД главной диагональю максимальным элементом. код программы, где уже все найдено и объявлено. #include <iostream> using namespace std ; int main() { const int N (3) ; int matrix ;
C++ Подключение заголовочного файла, файлов ресурсов
Добрый день, возникла проблема с подключением файлов . Есть готовые файлы,чтоб не копироват, создаю консольное приложение, создаю заголовочный файл main.cpp , пишу код подключая вектора(готовый файл Integer_vector.hpp) в заголовочные файлы и в файлы ресурсов integer_vector.cpp ,но не работает,что я не так делаю, если можно опишите полную последовательность моих действий!!! visual studio 2012
C++ Ошибка [Error] ld returned 1 exit status (Dev - C++) http://www.cyberforum.ru/cpp-beginners/thread1003469.html
#include<iostream> using namespace std ; int mul(int x , int y ) ; int mul() { int answer ; answer=mul(10,11) ; cout<<"Otvet raven: "<< answer ;
C++ Таблица умножения Написать программу проверки знания таблицы умножения. Программа должна вывести 10 примеров и выставить оценку: за 10 правильных ответов — "отлично"; за 9 и 8 —"хорошо"; за 7 и 6 — "удовлетворительно"; за 6 и менее — "плохо". подробнее

Показать сообщение отдельно
riki34
2 / 2 / 0
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 16:30     Абстрактные и производные классы С++
Проблема:
Есть базовый класс "Фигура", и производные: "Точка", "Круг", "Прямоугольник", "Треугольник".
Надо сделать чистую виртуальную функцию Transform, и переопределить её в производных классах.
Принцип работы функции Transform: функция должна трансформировать точку в круг, круг в прямоугольник, прямоугольник в треугольник.
Когда я пытался реализовать данную функцию то наткнулся на проблему: При переходе от точки к кругу надо передавать 1 параметр(радиус), от круга к прямоугольнику 0 параметров, от прямоугольника к треугольнику 1 параметр(точка).
Вопрос: По какому принципу можно реализовать данную функцию, чтобы ею можно было управлять через базовый класс?
Вот классы которые я описал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Базовый класс
 
class Figure {
public:
    virtual Figure& Transform() = 0;
};
 
//Класс точка
 
class Point : public Figure {
protected:
    int x, y;
public:
    Point(int, int);
    void SetX(int);
    void SetY(int);
    int GetX();
    int GetY();
    Figure& Transform();
};
 
//Класс круг
 
class Circle : public Point {
private:
    int Radius;
public:
    Circle(Point, int);
    void SetRadius(int);
    int GetRadius();
    Figure& Transform();
};
 
//Класс прямоугольник
 
class Rectangle : public Figure {
private:
    Point mas[4];
public:
    Rectangle(Point point1, Point point2);
    Rectangle(Point mas[4]);
    void SetPoint(Point point, int number);
    Point GetPoint(int number);
    Figure& Transform();
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru