aboutsummaryrefslogtreecommitdiff
path: root/tree.cpp
diff options
context:
space:
mode:
authorAdrian Kummerländer2012-03-10 19:14:27 +0100
committerAdrian Kummerländer2012-03-10 19:14:27 +0100
commit5d618cc8affb959ac64f9cf502dbddf53fb5e7c5 (patch)
tree3b53a6a641eefd82dbe6fc4c9e31fc912d5d1d67 /tree.cpp
parent1482e7ede3133b8bf78c68c2e0618b1de90d328c (diff)
downloadSimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.tar
SimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.tar.gz
SimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.tar.bz2
SimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.tar.lz
SimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.tar.xz
SimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.tar.zst
SimpleParser-5d618cc8affb959ac64f9cf502dbddf53fb5e7c5.zip
Moved static_cast needed for accessing the specific solve methods of the two derivatives of Node into a template function
Diffstat (limited to 'tree.cpp')
-rw-r--r--tree.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/tree.cpp b/tree.cpp
index ee45e57..340685f 100644
--- a/tree.cpp
+++ b/tree.cpp
@@ -1,21 +1,24 @@
#include "tree.h"
-#include <math.h>
Node::Node()
{
}
+template <class T>
+double Node::castSolve (Node *node) {
+ T *tmp = static_cast<T*>( node );
+ return tmp->solve();
+}
+
double Node::solve()
{
switch (this->type) {
case OPERAND_NODE: {
- OperandNode *tmp = static_cast<OperandNode*>( this );
- return tmp->solve();
+ return this->castSolve<OperandNode>( this );
}
case OPERATOR_NODE: {
- OperatorNode *tmp = static_cast<OperatorNode*>( this );
- return tmp->solve();
+ return this->castSolve<OperatorNode>( this );
}
}
}