LogRus, я думаю, что твои примеры не подходят под мои условия. Или я их не понял.
Думаю второе
Возможно путанится возникла из-за того что у меня имена хедеров другие.
Суть в моих примерах одна и таже: сокрытие зависимостей и реализации
ладно давай в других терминах
поправил сообщение с кодом изменив имена классов на мнемонические
в первом случае, ты в реализации явно зовёшь методы из класса реализации
не нужна фабрика, объект Wrapper можно создать на стеке
это, то, что предлагал Вад, только вместо указателя используется умный указатель
во втором эта работа делается механизмами полиморфизма
нужна фабрика(функция возвращающая реализацию)
вот пара статей
http://www.ddj.com/cpp/184401705http://www.ddj.com/cpp/205918714была еще статейка, как жестоким хаком сделать pImpl без хранения указателя
суть примерно такая
class Wrapper
{
void method() { reinterpret_cast<Impl*>(this)->method(); }
}
Wrapper* GetWraper(){ return reinterpret_cast<Wrapper*>(new Impl());}