reinterpret_cast vector de clase derivada a vector de clase base

Tengo una clase de terceros, digamos, claseA, y una función que acepta el vector de claseA del mismo tercero, digamosf3() (Ver programa simplificado a continuación).

Para un uso más fácil deA, Creé una clase derivadaB. Muchas partes de mi programa usaban claseB.

La pregunta es, ¿cómo puedo llamar?f3() con un vector deB como argumento? Es un casting forzado en el argumento def3() ¿Te gusta el programa a continuación, una buena práctica?

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

// a 3rd-party class
class A
{
public:
    int n;
    void f1();
};

// my class
class B: public A
{
public:
    void f2();
};

// a 3rd-party function
void f3(std::vector<A> &a);

int main()
{
    std::vector<B> y;

    y.push_back(B());
    y.push_back(B());
    y.push_back(B());
    y.push_back(B());

    f3(*(vector<A>*)(&y));  // Is this a good practice?
    cout << y[3].n << endl;
    return 0;
}

Tenga en cuenta que, por compatibilidad, a propósito hago claseB&nbsp;no tener más variables que la claseA, cuandoB&nbsp;hereda deA. Sin embargo, claseB&nbsp;tiene más métodos queA.

¿Garantizará quesizeof(A)&nbsp;es lo mismo quesizeof(B), para que nuestro elenco de vectores funcione?

Estoy trabajando en C ++ 03