Существует ли способ скрыть частные элементы данных класса C++ далеко от его пользователей в cpp файле? Я думаю о членах парламента, не занимающих официального поста как о части реализации, и это кажется немногим назад для объявления их в заголовочном файле.
Выходит в коммерческую эксплуатацию? ;)
Можно создавать заголовочные файлы, в которых вы объявляете только публичный и защищенный API.
Пользователю предоставляются только эти файлы, которые он может включить. Они связывают свой код с библиотекой, которую вы создали с помощью полного API и определений.
Для inlined функций: убедитесь, что они используются в неинлайнингованном коде, тогда в библиотеке будет доступно определение (я не уверен, что оно будет инлайнингованным в пользовательской реализации, однако).
Для шаблонного кода нет реального способа обойти это определение. Одним из половинчатых решений является создание кода, использующего шаблонный код с различными типами объектов. Пользователь будет ограничен ими, потому что это единственные определения, доступные в вашей библиотеке.