Если вы можете изменить сигнатуру вызываемой функции, измените ее на:
void doSomething( A const& obj );
Тогда вы можете позвонить с помощью:
doSomething( B() );
Если вы не можете, следует объявить локальную переменную:
void callingRoutine()
{
B temp;
doSomething( &temp );
}
Если вызывающая функция длиннее, и это проблема, если временная
не сразу уничтожается, вы можете заключить его в дополнительные {...}
:
void callingRoutine()
{
{
B temp;
doSomething( &temp );
}
// More code here...
}
В общем, однако, если это необходимо, ваши функции
вероятно, слишком долго.