toppings[z] = a[z] ;
If a is declared as a plain int, why are you subscripting it like an array of int? I think you should make the whole thing an array and that'll fix your problem.
void Pizza::set ( int x , int y , int a[] , int i );
void Pizza::set ( int x , int y , int a[] , int i )
{
type = x ;
size = y ;
for ( int z = 0 ; z < i ; z++ )
toppings[z] = a[z] ;
}
pizza.set ( x , y , a, i ) ;