@pakozm After discussing over here, we don't really want to expose a chunk level API in GridFS, preferring to keep the public abstraction about files. Instead, here is what we have decided:

Create a *private* `_insertChunk` method in GridFS. Retain the minimal required friendships for this to be invoked, and call it where you are currently calling `_grid->_client.insert( _grid->_chunksNS.c_str() , c._data );`. This way, you aren't directly accessing the members of the other class: just calling into a private method.