В соответствии с вашим комментарием:
«Нет, это не академический вопрос. Мне нужно вызвать функцию, принимающую в качестве аргумента Base*&
»
Правильный способ решения это создать новую переменную указателя соответствующего типа и передать ее (или, вернее, ссылку на нее) соответствующей функции:
struct Base { };
struct Derived : Base { };
int main()
{
Derived* derived = nullptr;
Base* base = static_cast<Base*>(derived);
my_function(base); // takes a Base*& argument
// If you need the pointer value and are sure that
// it's a Derived* type:
derived = static_cast<Derived*>(base);
}
Обратите внимание, что вы, скорее всего, получили этот ответ скорее, если бы вы включили соответствующую информацию (из комментария, приведенного выше) в самом вопросе.