C++ 访问指针时节点遍历导致访问冲突写入错误

C++ 访问指针时节点遍历导致访问冲突写入错误,c++,traversal,access-violation,C++,Traversal,Access Violation,这在这里和网络的其他部分已经讨论过多次,应该是一个需要解决的小问题。然而,几个小时的调试之后,我还没有设法解决它。注意,这是C++赋值,我是新的。< /P> 我正在尝试将WordData对象tempData存储在tempNode中,如下代码所示: void WordList::addNodeToEnd(WordData tempData,int currentLine, wordNode* endNode){ if (headNode == NULL) { cout &l

这在这里和网络的其他部分已经讨论过多次,应该是一个需要解决的小问题。然而,几个小时的调试之后,我还没有设法解决它。注意,这是C++赋值,我是新的。< /P> 我正在尝试将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在VS中显示的内容:

错误消息:

单词列表类定义:

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

完整来源,以防有人手头有时间,真的想挖掘:
它在VS和Xcode上编译。

好的,很简单,将问题行改为tempNode=newwordnode{tempData}

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);
};