Re[2]: непонятки с множественным наследованием
От: Leshi Россия  
Дата: 25.03.05 15:27
Оценка:
Здравствуйте, _DAle_, Вы писали:

S>>
S>>        B* b = (B*)(*it);
S>>

_DA>Используй dynamic_cast вместо этого преобразования.
Не пойдет. Преобразовать из A* в B* неизвестно как. Я думаю, что правильнее всего будет завести промежуточный тип:

class A
{
public:
    void foo1() { cout << "A::foo1" << endl; }
};

//второй абстрактный базовый класс
class B
{
public:
    virtual void foo2() = 0;
};
class C: public A, public B
{
};
//два производных класса
class C1: public C
{
public:
    void foo2() { cout << "C1::foo2" << endl; }
};

class C2: public C
{
public:
    void foo2() { cout << "C2::foo2" << endl; }
};

Вот тогда можно будет dynamic_cast использовать.
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.