struct返回语句的分段错误:如何解决此问题?

时间:2019-05-24 16:04:21

标签: c++ struct segmentation-fault return

我正在为我正在处理的解析器创建AST,但是在调用getRoot()时出现了分段错误,似乎无法弄清原因。我半确定这是显而易见的,但是凝视了很长时间的代码后,我一无所获。

试图研究这个问题,我发现我可能会弄乱堆栈,但看不到如何。

当我运行以下代码时,就会发生分段错误:

AST ast;
ast.getRoot();

.cpp文件:

#include "AST.h"

Compiler::AST::AST() {

}

void Compiler::AST::addNode(Node node) {
   if(rootNull){
      setRoot(node);
      rootNull = false;
   }else{
      root.childNodes.push_back(node);
   }
}

Compiler::AST::Node Compiler::AST::getRoot() {
   return root;
}

void Compiler::AST::setRoot(Compiler::AST::Node node) {
   this->root = node;
}

.h文件:

#ifndef COMPILERS_ASSIGNMENT_AST_H
#define COMPILERS_ASSIGNMENT_AST_H

#include <string>
#include <vector>
#include <iostream>

namespace Compiler {


    class AST {
    public:
        struct Node{
            std::string descriptor;
            std::vector <Node> childNodes;
        };
        typedef Node Node;
        AST();
        void addNode(Node);
        Node getRoot();
    private:
        Node root;
        bool rootNull = true;
        void setRoot(Node);
    };
}

#endif //COMPILERS_ASSIGNMENT_AST_H

0 个答案:

没有答案