Редактировать - поставить вопрос в контекст немного больше.
Дано:
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)) { }
это не работает. const_cast
не имеет смысла для меня, так как я не хочу менять константность, и я не изменяю то, на что я указываю, так почему же g ++ говорит мне
invalid static_cast from type ‘Derived* const’ to type ‘Base* const’
? Если я опущу актерский состав, он говорит
no matching function for call to ‘Alice::Alice(Derived* const)’
Если бы кто-нибудь мог пролить свет на это, это было бы очень ценно.