Bin in der Lage, Zeiger in einem Vektor zu halten, nur damit ich sie verwenden kann, um den Speicher im dtor freizugeben.Zuweisung des Callback-Listener-Objekts in Boost Bind, wenn Notifier/Signal den Gültigkeitsbereich verlässt
Ich habe ein Objekt auf Callbacks (Slots) von den Boost-Signalen zu hören. Diese Objekte mussten einen größeren Umfang als die Methode, in der es erstellt wird, wie es die Boost-Signale hören sollte viel später hören als wo es ist erstellt.So musste ich den Speicher in Heap reservieren und abonniert sofort Boost-Signale mit dieser Instanz.
Nun sollten diese Objekte aus dem Speicher freigegeben werden, wenn die Klasse, um die Signale halten, sind destroyed.Now, was meine Optionen sind,
Hat steigern ausplanen alle diese Objekte, wenn Boost-Signal außerhalb des Gültigkeitsbereichs und alle hören geht boost: bind Objekte werden zerstört ??
Wird geteilter Zeiger oder intelligenter Zeiger mir dabei helfen?
Muss ich einen Vektor aller dieser Zeiger im Signalling Service haben, um in seinem Destruktor die Zuordnung aufzuheben? Gibt es einen besseren Weg?
void methodA(){ CallbackHandler* cbHandler=new CallbackHandler(..); //Allocating in heap as we want to receive boost signals on //this instance even after this method exits signalingService.subscribeToCertainSignals(signalType,boost::bind(&CallbackHandler::boostSlotListener,cbHandler,_1)); } // Boost Signal -SignalingService boost::signal<void (const std::string &msg)> signal1; boost::signal<void (const std::string &msg)> signal2; void subscribeToCertainSignals(const std::string& signalType,boost::function<void (const std::string& str)> bindObject){ this->signal1.connect(bindObject); this->signal2.connect(bindObject); } void sendSignals(A a){ if(check){ this->signal1("somestring1"); }else{ this->signal1("somestring1"); }
};
Ich bin ein Java-Entwickler nur C++ Programmierung gestartet. Habe angefangen, ein paar gute C++ Bücher zu lesen, aber immer noch versucht, meinen Weg zu finden. Bitte beraten Sie, wenn etwas grundsätzlich falsch ist. – Yeshvanthni