Пусть B
реализует интерфейс IB
.A
внутренне управляет экземпляром B
и имеет получатель getB
, который возвращает интерфейс IB
частного экземпляра B
.Если вы хотите защитить экземпляр B
, вы можете создать методы IB
const
, а также скрыть деструктор (сделав его закрытым в IB
).
class IB {
private:
~IB();
public:
virtual void method1() = 0;
virtual void method2() = 0;
};
class B : public IB {
public:
virtual void method1() {};
virtual void method2() {};
void destruct() { delete this; }
};
class A {
private:
B myB;
public:
IB *getB() { return &myB; }
};
(Этопросто чтобы дать представление. Прошло более 3 лет с тех пор, как я в последний раз касался C ++. Я мог сделать несколько вопиющих ошибок.)