Дизайн библиотеки: скрытие зависимостей
Я пытаюсь создать библиотеку, которая использует стороннюю библиотеку для внутреннего использования, но я не хочу показывать эту стороннюю библиотеку пользователю моей библиотеки. Таким образом, при сборке статической библиотеки пользователю понадобятся только мой заголовок и скомпилированная библиотека.
Как мне работать с закрытыми членами в моих определениях классов, которые определены в сторонней библиотеке?
Например . ,
заголовок:#include "ThirdPartyLib.h"
class DummyClass
{
TypeFromThirdParty tftp;
public:
bool checkStuff(const float) const;
};
реализация:#include "ThirdPartyLib.h"
#include "dummy.h"
bool DummyClass::checkStuff(const float t)
{
return tftp.isOk(t);
}
Оскорбительная часть является#include "ThirdPartyLib.h"
в заголовке, так как тогда пользователю моей библиотеки понадобится больше, чем моей библиотеке.
Одним из способов обойти это может быть предварительное объявление всех сторонних типов, используемых в заголовке, а затем замена типов значений ссылками, но мне интересно, есть ли другой метод или дизайн, который я полностью пропускаю?