Pretty sure you described the attorney-client pattern.
If it is, it's the first time I hear about it. It always gives me a kick when I make up a similar design pattern to some grey beard's invention. Alas, I should read up on those patterns to avoid reinventing stuff and sharing things with people with appropriate names.
--
C++'s private inheritance can be used here to avoid some of the gymnastics, wherein, that private aspect of the class can be passed out into the appropriate party at creation time or otherwise.
To illustrate: https://gist.github.com/arithma/0d96aec5c07e2d8dc24cfc6cd31f...
Note: I have never used this in production as far as I remember.