[pimpl] конвертирование класса в его реализацию и наоборот
От: chipmunk  
Дата: 11.06.08 12:10
Оценка:
Есть либа с несколькими взаимосвязанными классами. Делаю для неё public-интерфейс по идиоме pimpl.
Но столкнулся с трудностью, что некоторые классы не должны выставлять наружу некоторых методов, но они используются внутри самой библиотеки. Выход — оперировать внутри библиотеки только impl-версиями классов, а наружу конвертировать их в public-версии. Но не могу придумать как это сделать Также потребуется и обратная конвертация — из public-версии в impl-версию.


class A {
public:
  void doSomething();  
private:
  class AImpl;
  AImpl* m_impl;
};

class AImpl {
public:
  void doSomething();
  void doSomethingOnlyFromLib(); // этот метод используется только внутри библиотеки, наружу выставлять его нет смысла
};


или все-таки хреновый дизайн раз такого хочется ?
pimpl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.