Te hago una recomendación, puesto que no conozco de typeId ni c++, pero se más de objetos y cosas que pueden ser útiles independientemente del lenguaje.
seguramente lo que tu queres hacer es algo así (en pseudocódigo):
Código:
for (int i=0; i<array.length() ; i++){
if (array[i].isB()){
array[i].hacerAlgo();
}
}
El problema que tienes es tienes dos objetos que no son polimorficos (porque los dos no hacenAlgo()) y los tienes juntos en un mismo array.
solucion 1) Ponlos en arrays separados.
solucion 2) en vez de usar el typeId, declara métodos isA isB por los que puedas preguntar.
solucion 3) (esta es la que mas me gusta) haz que los objetos A y los objetos B tengan el método hacerAlgo() pero los objetos A no hagan nada :), por lo que tu código quedaría como:
Código:
for (int i=0; i<array.length() ; i++){
array[i].hacerAlgo();
}
Y no tienes que preguntar por el tipo
Suerte, espero que te sirva!