Me gustaría crear en C++ una clase Notifier que usaré en otros objetos para notificar a varios titulares cuando el objeto se destruya.¿Cómo puedo saber la dirección del objeto propietario en C++?
template <class Owner>
class Notifier<Owner> {
public:
Notifier(Owner* owner);
~Notifier(); // Notifies the owner that an object is destroyed
};
class Owner;
class Owned {
public:
Owned(Owner* owner);
private:
Notifier<Owner> _notifier;
};
Mi punto es que como tengo un gráfico objeto denso y complicado, me gustaría evitar el almacenamiento de la dirección del objeto de propiedad en el notificador. ¿Hay alguna manera de cambiar mi clase notificador para que pueda deducir la dirección del objeto propiedad desde su propia dirección y un desplazamiento que se computaría en tiempo de compilación?
Tenga en cuenta también que cualquier objeto puede tener que notificar a varios "propietarios", posiblemente de la misma clase.
Gracias.
¿Necesita polimorfismo estático o puede crear una clase base abstracta IOwner con p. Ej. un método virtual puro 'notificar'? –
No, no puedo tener una 'notificación' virtual pura. –