Maybe some copy constructor or assignment operator which you forgot to define, or which is implemented wrong?
I would suggest to abstract all this C++-specific technical stuff (like defining the Big Three, or managing memory) away, as far as possible. Those are mostly boilerplate code and correspondingly error-prone. If you use value semantics and RAII, most of your classes don't need the Big Three or any delete operators. Also make sure you adhere to const-correctness, it prevents you from accidentally changing values.