你好我有一个完整的构建表达式树,但我认为我的指针/节点之间的数据类型/兼容性有问题,我有4种不同的节点类型:
class expressionNode{
private:
expressionNode* left{nullptr};
expressionNode* right{nullptr};
char op{'n'};
public:
virtual void info() const = 0;
}
class numericNode : public expressionNode
{...}
class binaryExpressionNode : public expressionNode
{...}
class functionNode : public expressionNode
{...}
所以我将表达式存储在expressionNode *的std :: vector中,我pop_back向量的2个项目并将每个项目存储在expressionNode *中,然后将它们作为binaryExpressionNode *的一个元素push_back。
最后,parser()使用
返回向量的所有表达式(expressionNode *的一项)static_cast<binaryExpressionNode*>(v.back());
- 问题是我只能访问root,left和amp;的数据。是的,当我尝试在所有其他节点上调用info()时,他们不显示任何数据,他们喜欢无效或未定义的行为吗?, 然后它崩溃了。谢谢