Say you had some underlying class which provides functionality X() and Y(). Suppose the class looks like this:
Originally Posted by George2
So the job of the Pimpl wrapper is to implement X() and Y() in terms of someThing() and someThingElse(). The two some*() functions are implementation details. The user will only see X() and Y(). So suppose you inherit from the wrapper. You can still call X() and Y() but you can't access the underlying ClassGuts object because that's the whole point of having a wrapper. You could inherit from ClassGuts directly, but now you've rendered the Pimpl idiom irrelevant.