Вопрос

Есть ли способ скрыть члены частных данных класса C++ от пользователей в файле cpp?Я считаю закрытые члены частью реализации, и объявлять их в заголовочном файле кажется несколько неправильным.

Это было полезно?

Решение

Идиома «прыщ» — это то, как обычно это делается.

Видеть

Другие советы

вы хотите использовать что-то вроде идиомы PIMPL

http://en.wikipedia.org/wiki/Opaque_pointer

Классический способ сделать это — использовать прокси-указатель на внутренний класс, реализующий эту функциональность.Насколько мне известно, в C++ невозможно создать частичные определения классов.

Займетесь коммерцией?;)

Вы можете создавать файлы заголовков, в которых объявляете только общедоступный и защищенный API.

Пользователю предоставляются только те, которые он может включить.Они связывают свой код с библиотекой, которую вы создали, используя полный API и определения.

Для встроенных функций:убедитесь, что они используются в невстроенном коде, тогда в библиотеке будет доступно определение (однако я не уверен, что оно будет встроено в пользовательскую реализацию).

Для шаблонного кода другого пути нет.Одним из половинчатых решений является создание кода, который использует шаблонный код с различными типами объектов.Пользователь будет ограничен этими определениями, поскольку это единственные определения, доступные в вашей библиотеке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top