C++ 访问指针时节点遍历导致访问冲突写入错误
这在这里和网络的其他部分已经讨论过多次,应该是一个需要解决的小问题。然而,几个小时的调试之后,我还没有设法解决它。注意,这是C++赋值,我是新的。< /P> 我正在尝试将WordData对象tempData存储在tempNode中,如下代码所示: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
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);
};