Есть ли способ скрыть частные члены данных класса С++ от своих пользователей, в файле cpp? Я думаю, что частные члены являются частью реализации, и кажется немного назад, чтобы объявить их в файле заголовка.
Скрытие личных данных? (С++)
Ответ 1
Идиома "pimpl" - это то, как это обычно обрабатывается.
См
- http://www.gotw.ca/gotw/024.htm
- http://www.gotw.ca/gotw/028.htm
- http://herbsutter.com/gotw/_100/ (обновлено для С++ 11)
Ответ 2
См. Идиома Pimpl
Ответ 3
вы хотите использовать что-то вроде идиомы PIMPL
Ответ 4
Классический способ сделать это - прокси-указатель на внутренний класс, который реализует функциональность. Невозможно выполнить частичные определения классов в С++, о которых я знаю.
Ответ 5
Идет коммерческий?;)
Вы можете создавать файлы заголовков, в которых вы объявляете только открытый и защищенный API.
Пользователь представлен только с ними, которые они могут включить. Они связывают свой код с библиотекой, которую вы создали с использованием полного API и определений.
Для встроенных функций: убедитесь, что они используются в неинтерминированном коде, тогда в библиотеке будет доступно определение (я не уверен, что оно будет включено в пользовательскую реализацию).
Для шаблонного кода нет реального пути. Одним из половинчатых решений является создание кода, который использует шаблонный код с разными типами объектов. Пользователь будет ограничен этим, потому что они являются единственными определениями, доступными в вашей библиотеке.