From f67ee238c956bb84cfc743b86c41a7e23f1980ba Mon Sep 17 00:00:00 2001
From: "Abu Zaher Md. Faridee" <zaher14@gmail.com>
Date: Fri, 24 May 2013 03:50:24 +0600
Subject: [PATCH] re-enabling the destructor to enable deletion of dynamically
 allocated memory.

---
 randomforest.hpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/randomforest.hpp b/randomforest.hpp
index 5dd1876..d0ac1ec 100644
--- a/randomforest.hpp
+++ b/randomforest.hpp
@@ -30,14 +30,14 @@ public:
     
     //NOTE:: if you are going to dynamically cast, aren't you undoing the advantage of abstraction. Why abstract at all?
     //could cause maintenance issues later if other types of Abstract decison trees are created that cannot be cast as a decision tree.
-//    virtual ~RandomForest() {
-//        for (vector<AbstractDecisionTree*>::iterator it = decisionTrees.begin(); it != decisionTrees.end(); it++) {
-//            // we know that this is decision tree, so we can do a dynamic_case<DecisionTree*> here
-//            DecisionTree* decisionTree = dynamic_cast<DecisionTree*>(*it);
-//            // calling the destructor by deleting
-//            delete decisionTree;
-//        }
-//    }
+    virtual ~RandomForest() {
+        for (vector<AbstractDecisionTree*>::iterator it = decisionTrees.begin(); it != decisionTrees.end(); it++) {
+            // we know that this is decision tree, so we can do a dynamic_case<DecisionTree*> here
+            DecisionTree* decisionTree = dynamic_cast<DecisionTree*>(*it);
+            // calling the destructor by deleting
+            delete decisionTree;
+        }
+    }
     
     int calcForrestErrorRate();
     int calcForrestVariableImportance(string);
-- 
2.39.5