AST指针错误

时间:2018-02-09 19:37:35

标签: c++ pointers inheritance polymorphism abstract-syntax-tree

你好我有一个完整的构建表达式树,但我认为我的指针/节点之间的数据类型/兼容性有问题,我有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
{...}

expr IMG

所以我将表达式存储在expressionNode *的std :: vector中,我pop_back向量的2个项目并将每个项目存储在expressionNode *中,然后将它们作为binaryExpressionNode *的一个元素push_back。

最后,parser()使用

返回向量的所有表达式(expressionNode *的一项)
static_cast<binaryExpressionNode*>(v.back());

- 问题是我只能访问root,left和amp;的数据。是的,当我尝试在所有其他节点上调用info()时,他们不显示任何数据,他们喜欢无效或未定义的行为吗?, 然后它崩溃了。谢谢

0 个答案:

没有答案