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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
#1

Наследование и полиморфизм. - C++

05.12.2011, 16:11. Просмотров 805. Ответов 1
Метки нет (Все метки)

Вопрос следующий. Как мне вытащить функцию из родителя класса родителя, при условии что родителей тек. класса у меня 2! )) Запутанно? Ниже я описал все более детально:

В общем, есть класс который наследник двух родителей.
C++
1
class TCylinder  : public Circle, Pixel
эти два класса, Circle, Pixel тоже наследники класса Point.
т.е. общая схема выглядит вот как:
Point
||
/ \
/ \
Pixel Circle
| |
\ /
\ /
TCylinder
класс Point:
C++
1
2
3
4
5
6
public:
//...
    void Move(int delta_x, int delta_y); 
    Point(int x=0, int y=0);       //те. координаты точки
    virtual ~Point(){}
//...
класс Pixel
C++
1
2
3
4
5
6
7
8
class Pixel : public Point  
{
public:
enum Color{black, blue, green, red=4, white=15};
    Pixel(int x =0, int y =0, Color c =black); //т.е. к координатам точек добавляется цвет.
//...
    void Print()const;
//...
класс Circle
C++
1
2
3
4
5
6
7
8
9
class Circle : public Point  
{
public:
    Circle(int x, int y, float Diametr=0.1f); //т.е. просто к коорд точки добавили диаметр
                                                            // и теперь это круг.
    //...
    virtual void Print()const;
//...
};
класс TCylinder
C++
1
2
3
4
5
6
7
class TCylinder  : public Circle, Pixel  //наследует св-ва 2х классов.
{
public:
    TCylinder(int x =0, int y =0, float Diametr=0.1f,Color c =black); //содержит в себе только лишь
                                                                                       //параметры родителей.
//...
};
итак, теперь вопрос.
когда я хочу запустить класс TCylinder , делаю вот такую штуку:

C++
1
2
3
    TCylinder Cylinder(1,2);
    Cylinder.Move(34,16);
        Cylinder.Print();
соотв. На строке где "Move" VC++ ругается грязно таким образом:
C++
1
2
warning C4385: could be the 'Move' in base 'Point' of base 'Circle' of class 'TCylinder'
warning C4385: or the 'Move' in base 'Point' of base 'Pixel' of class 'TCylinder'
- и глубоко в душе я с ним согласен, т.к. класса поинт я не приглашал к себе в наследники,
и данная ф-я "Move" содержится в обоих родителях класса TCylinder а следовательно не понятно с какой отрабатывать. Если уважаемые знатоки сталкивались с подобной проблемой и захотят поделиться опытом, я буду крайне признателен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 16:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование и полиморфизм. (C++):

Наследование, полиморфизм - C++
Не могу реализовать полиморфизм для метода getShow() ну и в теории сетШов(). Но сейчас о гете говорим. Я создал дополнительный класс...

Наследование и полиморфизм - C++
Добрый день ребятюни!! Срочно требуется ваша помощь! Программа которая служит для вывода выдающихся учеников и преподов. Если у...

Наследование и полиморфизм - C++
Написать демонстрационную программу, в которой создаются объекты различных классов. Определение классов, их реализацию, демонстрационную...

Наследование и полиморфизм... - C++
Есть спецы в этой теме?) Сейчас пишу курсовую, в методичке (препод сильно снижает за отклонения от инструкций) сказано создать базовый...

Полиморфизм, наследование - C++
Товарищи, кто может, объясните пожалуйста. Просят добавить новый тип объектов Trap. Методы в нем объявлены как виртуальные, но в...

Полиморфизм, наследование - C++
Создать абстрактный базовый класс с виртуальной функцией*— площадь. Создать производные классы: прямоугольник, круг, прямоугольный...

1
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.12.2011, 16:20 #2
думаю стоит почитать про открытое, закрытое, виртуальное наследование..
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 16:20
Привет! Вот еще темы с ответами:

Наследование и полиморфизм классов - C++
Доброго времени суток. Суть задания определить иерархию классов; Классы - тест, экзамен, выпускной экзамен, испытание; я так...

Классы / наследование / полиморфизм - C++
Решите, если несложно, программа вроде довольно простая..., но с с++, я пока неочень... Добавлено через 36 минут вот что я...

ООП Полиморфизм Наследование - C++
У меня есть базовый класс и 2 производных от него класса... Как сделать, чтобы в программе я мог сделать такое обьявление: Force fc;...

Полиморфизм инкапсуляция и наследование(ООП) - C++
Не как не могу понять зачем нужен Полиморфизм и инкапсуляция и их определение может вы подскажите, наследования я знаю


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru