Для начала: не пишите так.
А так, если классы именно такие, то memory layout у них просто и, грубо, они указывают а одну область памяти. Поэтому поможет простое приведение:
void foo(A& a) {
//a.getSome(); //error: class 'A' has no member 'getSome()'
static_cast<B&>(a).getSome(); // All ok.
}
Более того, у вас ещё косяк, такой код:
B b();
это не то, что вы подумали, это объявление функции. Всё что выглядит как функция, крякает как функция - функция. Правильно так:
B b; // дефолтный конструктор не для POD типов вызовется и так
или так:
B b = B(); // Накладных расходов не будет. Будет вызван ТОЛЬКО один консутрутор. Компиляторы не совсем дураки.
Кроме того, надеюсь, класс B описан, на самом деле, как-то так:
class B : <b>public</b> A {
<b>public:</b>
int getSome();
};
а не так как у вас.