diff options
author | Adrian Kummerländer | 2012-03-10 19:14:27 +0100 |
---|---|---|
committer | Adrian Kummerländer | 2012-03-10 19:14:27 +0100 |
commit | 5d618cc8affb959ac64f9cf502dbddf53fb5e7c5 (patch) | |
tree | 3b53a6a641eefd82dbe6fc4c9e31fc912d5d1d67 /tree.cpp | |
parent | 1482e7ede3133b8bf78c68c2e0618b1de90d328c (diff) | |
download | SimpleParser-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.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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 ); } } } |