2014-05-11 9 views
0

여기는 여러 번 여기에서 논의되었으므로 해결해야 할 사소한 문제 여야합니다. 그러나, 나중에 디버깅 시간, 나는 그것을 해결하기 위해 관리하지 않았습니다. 이것은 내가 처음 접했던 C++ 할당을위한 것임을 유의하십시오. 아래의 코드와 같이 내가 tempNode 내부 WordData 객체 tempData를 저장하기 위해 노력하고있어노드 탐색은 액세스 위반을 나타냅니다. 포인터에 액세스 할 때 쓰기 오류가 발생합니다.

:

tempNode->nextNode = NULL; 

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

문제는이 라인 VS :

what tempNode is showing

오류 메시지 :

enter image description here

단어 목록 클래스 정의 : 오류로

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

먼저 눈에 난이 문제가 될 수 있다고 생각했을 것이다, 액세스 에러가 될 것으로 보인다. 그러나, 내 코드의 다른 부분에서 클래스 인스턴스화에서 선언 된 클래스 함수에서 포인터와 변수를 사용했습니다. 또한, 나는 몇 가지 유사 콘텐츠를 시도하고 나는 픽업 wordData에 tempNode를 얻을 수없는 것 같습니다.

누군가가 손에 시간을 보내고 정말로 파기를 원한다면 : https://bitbucket.org/SpaceSteak/assignment-1/src VS와 Xcode에서 컴파일됩니다.

답변

0

Ok 쉽게 문제의 줄을 tempNode = new wordNode {tempData}로 변경했습니다.