Здравствуйте, _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 >>