diff --git a/gtsam/hybrid/HybridBayesTree.cpp b/gtsam/hybrid/HybridBayesTree.cpp index 9aee6dcf8..0766f452b 100644 --- a/gtsam/hybrid/HybridBayesTree.cpp +++ b/gtsam/hybrid/HybridBayesTree.cpp @@ -26,6 +26,10 @@ #include #include +#include + +#include "gtsam/hybrid/HybridConditional.h" + namespace gtsam { // Instantiate base class @@ -207,7 +211,9 @@ void HybridBayesTree::prune(const size_t maxNrLeaves) { if (conditional->isHybrid()) { auto hybridGaussianCond = conditional->asHybrid(); - hybridGaussianCond->prune(parentData.prunedDiscreteProbs); + // Imperative + clique->conditional() = std::make_shared( + hybridGaussianCond->prune(parentData.prunedDiscreteProbs)); } return parentData; } diff --git a/gtsam/inference/BayesTreeCliqueBase.h b/gtsam/inference/BayesTreeCliqueBase.h index a7b1cf06c..adffa2f14 100644 --- a/gtsam/inference/BayesTreeCliqueBase.h +++ b/gtsam/inference/BayesTreeCliqueBase.h @@ -140,6 +140,9 @@ namespace gtsam { /** Access the conditional */ const sharedConditional& conditional() const { return conditional_; } + /** Write access to the conditional */ + sharedConditional& conditional() { return conditional_; } + /// Return true if this clique is the root of a Bayes tree. inline bool isRoot() const { return parent_.expired(); }