I've got a bit of an odd problem, I initialize an object, and when I call a different empty constructor, the value of the object changes. What could be the problem?
You're making this->id point to a temporary variable. The local id only exists inside that constructor. Once the constructor exits, id no longer exists, and therefore this->id points to nothing/garbage (bad pointer)
Also, your S class should be initializing those pointers in its constructors. If nothing else you should set them to 0 or NULL so that your deletes won't try to delete them.
Longer, more descriptive class names would be good too. It's confusing to try and think of what 'T', 'R' and 'S' are supposed to be.
I had expected this to be a problem that would easily be identified so as to avoid clutter I didn't include all the code, I reproduced it here with shortened names when posting my main function and didn't change them back when posting the rest of the code.