Ich möchte in C++ eine Notifier-Klasse erstellen, die ich in anderen Objekten verwenden werde, um verschiedene Halter zu benachrichtigen, wenn das Objekt zerstört wird.Wie kann ich die Adresse des Besitzerobjekts in C++ wissen?
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;
};
Mein Punkt ist, dass ich ein dichtes und komplizierte Objektgraphen habe, würde ich in dem Anmelder die Adresse des im Besitz Objekts vermeiden möge zu speichern. Gibt es eine Möglichkeit, meine Benachrichtigungsklasse so zu ändern, dass sie die Adresse des eigenen Objekts von seiner eigenen Adresse und einem Offset ableiten kann, der zur Kompilierzeit berechnet wird?
Beachten Sie auch, dass jedes Objekt möglicherweise mehrere "Eigentümer" melden muss, möglicherweise aus der gleichen Klasse.
Danke.
Benötigen Sie statische Polymorphie oder können Sie eine abstrakte Basisklasse IOwner mit z. eine rein virtuelle Methode 'notify'? –
Nein, ich kann keine reine virtuelle "Benachrichtigung" haben. –