节点遍历在访问指针时给出访问冲突写入错误

时间:2014-05-11 23:11:40

标签: c++ traversal access-violation

这已经在这里和网络的其他部分多次讨论过了,应该是一个需要解决的小问题。但是,稍后的调试时间,我还没有设法解决它。请注意,这是一个C ++赋值,我是新手。

我正在尝试将一个WordData对象tempData存储在tempNode中,如下面的代码所示:

void WordList::addNodeToEnd(WordData tempData,int currentLine, wordNode* endNode){
    if (headNode == NULL) {
        cout << "**Initializing WordList Nodes**" << endl;
        tempNode->wordData = tempData;
        tempNode->nextNode = NULL;
        headNode = tempNode;
        endNode = tempNode;
    }
    else {
        endNode = new wordNode{ tempData };
        endNode = NULL;
        tempNode->nextNode = endNode;
        //std::cout << "current end node: " << endNode->wordData.getWord() << endl;
    }
}

问题在于这一行:

tempNode->nextNode = NULL;

这就是tempNode在VS中显示的内容:

what tempNode is showing

错误消息:

enter image description here

WordList类定义:

class WordList {
private:
    std::string fileName;

    struct wordNode {
        WordData wordData;
        wordNode* nextNode = NULL;

        wordNode(WordData data) {
            //nextNode = node;
            wordData = data;

        }
        wordNode(){

        }

    };

    wordNode* headNode = NULL;
    wordNode* endNode = NULL;
    wordNode* tempNode = NULL;
    //wordNode tempNode;

public:

    // WordList public methods:
    WordList(std::string);

    void parseFile();
    void addNodeToEnd(WordData tempWordData,int currentLine,wordNode* endNode);
    bool addExistingWord(std::string word,int currentLine,wordNode* traverse);
};

由于错误似乎是一个访问错误,乍一看我会认为这可能是一个问题。但是,在我的代码的其他部分,我已经在类实例化中声明的类函数中使用了指针和变量。此外,我尝试了一些不同的变化,我似乎无法让tempNode获取wordData。

完整的来源,以防有人有时间在他们的手上,真的想挖掘: https://bitbucket.org/SpaceSteak/assignment-1/src 它在VS和Xcode上编译。

1 个答案:

答案 0 :(得分:0)

好的,这很容易,将问题行改为tempNode = new wordNode {tempData};