In C++ we know that for a pointer of class we use (->) arrow operator to access the members of that class like here:
->
#include usi
Because by using [] like p[3] you are already dereferencing the pointer to array + index shift. After that you have to use ".", since p[3] is an object, not a pointer.