In Qt, most classes usually have a public wrapper class with a single pointer to a private class. This is for binary compatibility.
However this means that there are a lot of things that need to be implemented by hand. Some people suggest using a QScopedPointer.
How to use the Qt's PIMPL idiom?
However, this does not implement copy and assignment either. Isn't there a smart pointer that will just copy the content of the pointer when it's copied. In essence, it should behaves as if the data in the private class were in the public class.