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

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

Восстановить пароль Регистрация
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
05.12.2011, 16:11     Наследование и полиморфизм. #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 а следовательно не понятно с какой отрабатывать. Если уважаемые знатоки сталкивались с подобной проблемой и захотят поделиться опытом, я буду крайне признателен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 16:11     Наследование и полиморфизм.
Посмотрите здесь:

ООП Полиморфизм Наследование C++
C++ Классы / наследование / полиморфизм
C++ Наследование и полиморфизм
C++ Наследование и полиморфизм...
C++ Наследование и полиморфизм классов
undefined reference (наследование и полиморфизм) C++
C++ Полиморфизм инкапсуляция и наследование(ООП)
Наследование, полиморфизм C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.12.2011, 16:20     Наследование и полиморфизм. #2
думаю стоит почитать про открытое, закрытое, виртуальное наследование..
Yandex
Объявления
05.12.2011, 16:20     Наследование и полиморфизм.
Ответ Создать тему
Опции темы

Текущее время: 20:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru