Я хочу скрыть реализацию в файле реализации. Если объект не является общедоступным, я не хочу, чтобы заголовок объекта просачивался везде, где мой класс используется.Можно ли не включать переменную класса в заголовочный файл класса?
Предположим, я заголовок файла A.h
для моего класса A
:
Теперь, где бы я включил бы A.h
, Foo.h
также будут включены. Но я не могу использовать класс Foo
вне класса A
. Я бы предпочел не иметь эту линию #include "Foo.h"
. Есть ли способ переместить объявление переменной «foo» внутри реализации A.cpp
?
Я подозреваю, что одно из возможных решений предполагает добавление слоя абстрактного класса (аналогия интерфейса). Это лучшее решение?
спасибо.
+1, это идиома «PIMPL», и это стандартная практика. – greyfade
+1 к ответу и +1 к greyfade для указания, что это в основном pimpl (непрозрачный указатель на частные детали реализации). – stinky472
Ницца! Спасибо. Я помню, как я видел эту идиому, но в то время я не обращал на нее внимания. – Bear