Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
172 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
1

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

05.12.2011, 16:11. Просмотров 1006. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2011, 16:11
Ответы с готовыми решениями:

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

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

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

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

1
ниначмуроФ
845 / 529 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.12.2011, 16:20 2
думаю стоит почитать про открытое, закрытое, виртуальное наследование..
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2011, 16:20

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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