I don't see a copy constructor here. When you have member pointers, the data pointed to by those pointers is not automatically re-allocated. You therefore point at the old data which may no longer exist if you are working with the default copy constructor.
You'll need to create your own copy constructor and *front and *rear should point at new addresses. Then you need to copy the data that the original *front and *rear pointed to over to the new class manually.