int main () { A *a1 = new A(1); A *a2 = new A(2); A *a3; Array *ar = new Array(3,VOLAT); SpArray *sar = new SpArray(3,VOLAT); Array *a; if (0) a = ar; else a = sar; a->Assign(a1); a->Assign(a2, 2); a3 = (A *)a->Fetch(2); a3->Type(); }