Wie der Titel sagt, verwende ich boost::depth_first_search
und mit einem Besucher (erben von boost::default_dfs_visitor
), um einige Algorithmen zu implementieren.Verwendung von boost :: depth_first_search mit Besucher
Während des Laufs des Algorithmus möchte ich jedoch einige Informationen im Besucher speichern, um später abgefragt zu werden. Die Information wird jedoch gelöscht, nachdem das DFS fertig ist, also nehme ich an, dass es eine Kopie verwendet. Anders als nur mit Zeigern für alle private Variablen, gibt es eine Möglichkeit, dies zu verhindern und Boost meine Kopie verwenden?
Ich kann die Diagrammklasse nicht ändern, daher kann ich keine neuen Daten hinzufügen. Außerdem existiert das Diagramm im gesamten Programm und die Daten, die ich vom Besucher benötige, werden nur in einer Funktion benötigt und dann gelöscht. –
@Amir. Es gibt zwei Möglichkeiten. Sie könnten eine neue Spezialisierung der Diagrammklasse erstellen, die das Diagrammverhalten erbt und das neue Verhalten hinzufügt, das Sie benötigen. Alternativ können Sie eine brandneue Klasse erstellen, die Ihre "eine Funktion" und die benötigten Daten enthält. Anschließend erstellen Sie eine Instanz der neuen Klasse und speichern eine Referenz darauf in Ihrem Besucher. Meiner Meinung nach wäre beides eine logischere Art, Dinge zu arrangieren, die einfacher zu verstehen und zu pflegen wären. Außerdem "brechen" sie das Besucherdesign nicht durch die Verwendung einer obskuren Boost-Syntax! – ravenspoint