приведение Derived * const к Base * const

Edit - Поместите вопрос в контекст немного подробнее.

Дано:

struct Base
{
    ...
};
struct Derived : public Base
{
    ...
};
class Alice
{
    Alice(Base *const _a);
    ...
};
class Bob : public Alice
{
    Bob(Derived *const _a);
    ...
};

Когда я пытаюсь реализовать

Bob::Bob(Derived *const _d) : Alice(static_cast<Base*const>(_d)) { }

, это не работает. a const_cast для меня не имеет смысла, поскольку я не хочу менять константу, и я не меняю то, на что указываю, так почему же тогда g ++ сообщает мне

invalid static_cast from type ‘Derived* const’ to type ‘Base* const’

? Если я опущу гипс, там написано

no matching function for call to ‘Alice::Alice(Derived* const)’

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

5
задан parallel 16 October 2010 в 21:11
поделиться