I have problem in the pointer aggregation, if we aggregate an array in a class to another class, how should we initialise them using a constructor? and also I have a switch case, but when I insert the option, it run but does not break even I had included the word break.
You can't use a constructor at that point since the object has already been constructed. Objects in arrays are default constructed when the array is created. So if you use an array then you need to modify the value of the object; you can't "construct" it a second time.
Alternatively, you could use a vector instead of an array.
Your "array" isn't quote what you think. It's a "pointer to" a "pointer to Item". The first "pointer" is just that, but thru the convenience of pointer arithmetic, you can store and access and array with it. You haven't stored an array, so there's no array to access.
If you were to implement item correctly, your Customer implementation would lots of "non-Customer" things, like memory allocations/releases, linked list management of a "node" ...
In C++, those data structures exist in the Standard Template Library, and we can just use them, as dutch did above.
std::vector is a resizeable array, with optional bounds checking. You should just that.