Детали реализации в интерфейсе
От: Аноним  
Дата: 07.03.10 10:40
Оценка:
Есть некоторый класс PublicInterface, который должен быть доступен пользователю. В данный момент класс использует некоторые детали реализации ImplDetail:
class ImplDetail;

class PublicInterface
{
public:
  virtual void DoSomethingGeneral(PublicInterface& obj) = 0;

public:
  virtual ImplDetail& GetImplDetail() = 0;
};

примерно, следующим образом:
class PublicInterfaceImpl : public PublicInterface
{
private:
  void Process(ImplDetail& implDetail);
public:
  virtual void DoSomethingGeneral(PublicInterface& obj)
  {
    Process(obj.GetImplDetail());
  }

public:
  virtual ImplDetail& GetImplDetail()
  {
    static ImplDetail implDetail(42);
    return implDetail;
  }
};

Пользовательский код вызывать метод GetImplDetail в принципе не должен.

Вопрос: как лучше всего избавиться от GetImplDetail в публичном интерфейсе?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.